summaryrefslogtreecommitdiffstats
path: root/tags/cpp-1.0-incubating-M2-RC2/sca
diff options
context:
space:
mode:
Diffstat (limited to 'tags/cpp-1.0-incubating-M2-RC2/sca')
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/AUTHORS0
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/COPYING203
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/ChangeLog0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/Developers Guide.txt346
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/GettingStarted.html391
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/INSTALL2
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/LICENSE177
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/Makefile.am53
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/NEWS0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/NOTICE2
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/README74
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/autogen.sh31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/build.bat32
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/build.sh63
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/configure.ac212
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/doc/Axis2CWSService.html395
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/doc/CPPComponents.html333
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/doc/PythonExtension.html296
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/doc/RubyExtension.html288
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-base.css168
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-theme.css166
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/makebindist.sh70
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/makedist.sh46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build Instructions.txt12
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.dsp67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.mak259
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/build.cmd23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.dsw152
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.ncbbin0 -> 1131520 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.optbin0 -> 118784 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.dsp449
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.mak570
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.dsp241
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.mak390
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.dsp205
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.mak360
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.dsp185
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.mak340
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.dsp121
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.mak230
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.dsp149
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.mak300
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.dsp153
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.mak338
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca.sln73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/Build Instructions.txt30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/tuscany_sca.vcproj992
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.vcproj472
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_python/tuscany_sca_python.vcproj193
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.vcproj184
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.vcproj143
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.vcproj252
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.vcproj252
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/deploy.bat72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/Makefile.am74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.cpp372
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.h198
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp487
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.h262
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.cpp51
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.h81
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.cpp52
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.h79
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.cpp111
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.h95
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/export.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.cpp48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.h80
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.cpp48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.h77
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.h81
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.h80
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.cpp46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.h83
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.cpp146
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.h184
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.cpp261
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.h181
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.cpp198
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.h199
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.cpp67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.h82
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.cpp69
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.h86
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.h88
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.h91
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.cpp1815
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.h129
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.cpp72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.h129
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.h95
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.cpp82
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.h139
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.cpp56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.h103
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.h89
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.cpp58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.h109
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp448
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.h143
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.cpp102
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.h100
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h147
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.cpp48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.h95
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.cpp45
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.h48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.cpp213
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.h190
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.cpp224
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.h135
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.cpp51
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.h55
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.cpp160
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.h99
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.cpp34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.h49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.cpp109
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.h91
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logging.h67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.cpp562
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.h69
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/test/Makefile.am19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/Makefile.am44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/deploy.bat74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/Makefile.am48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.cpp139
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.h114
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.cpp113
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.h98
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ServiceRuntimeException.h101
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/export.h42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/sca.h31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.cpp74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.h57
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.cpp105
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.h72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.cpp74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.h72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.cpp193
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.h116
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.cpp198
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.h162
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.cpp163
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.h123
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.cpp106
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.h93
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.cpp82
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.h150
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.cpp62
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.h121
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.cpp59
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.h99
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.cpp52
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.h81
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-implementation-cpp.xsd49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-interface-cpp.xsd43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/Makefile.am45
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/ServiceRuntimeException.h115
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/export.h42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.cpp73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.h57
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.cpp78
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.h72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.cpp405
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.h110
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.cpp87
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.h98
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.cpp58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.h81
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/xsd/sca-implementation-php.xsd39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/deploy.bat84
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/Makefile.am58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.cpp75
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.h57
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.cpp91
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.h73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.cpp122
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.h72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.cpp99
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.h86
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceRuntimeException.h100
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp950
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.h143
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/export.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.cpp87
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.h129
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.cpp52
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.h84
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.cpp59
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.h95
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.cpp58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.h82
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_module.cpp380
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_proxy.py56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_setup.py60
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-implementation-python.xsd49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-interface-python.xsd62
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/deploy.bat71
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/Makefile.am48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/Ruby.h39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyCompositeContext.cpp77
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.cpp72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.h58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.cpp79
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.h72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.cpp374
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.h117
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp724
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.h96
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/export.h38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.cpp154
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.h140
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.cpp59
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.h96
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.cpp52
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.h78
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/xsd/sca-implementation-ruby.xsd39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp97
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.h74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.cpp46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.h72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp97
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.h74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.h71
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/xsd/sca-binding-sca.xsd37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/deploy.bat45
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp717
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.h67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.cpp108
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.h75
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.cpp110
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.h67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.cpp134
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.h137
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/deploy.bat65
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am86
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/axis2.xml181
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.cmd39
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.sh47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/module.xml25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/services.xml25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Dispatcher.cpp176
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2DispatcherModule.cpp149
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp506
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.cpp72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.h46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.cpp108
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.h74
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp587
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.h96
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.cpp139
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.h153
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploy.bat73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploymodule.bat69
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/xsd/sca-binding-webservice.xsd55
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/AUTHORS0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/Makefile.am21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README.html427
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataService.h64
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.componentType28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.cpp136
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.h61
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.h52
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.wsdl126
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.componentType40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.cpp130
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.h44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/Makefile.am59
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteService.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.componentType29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.cpp72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteTypes.xsd37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.h40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.wsdl165
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/bigbank.account.composite49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.bat51
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.sh48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.accountmanagement.composite30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/AccountClient.cpp129
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/Makefile.am49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.bat50
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.sh48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/AccountService.wsdl126
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/Makefile.am22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/README137
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigaccount.php113
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigwelcome.php44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/AccountWSClient.cpp184
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/Makefile.am44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.cpp111
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.h71
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.bat32
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.sh31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploy.bat67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deployclient.bat63
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploywsclient.bat63
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/COPYING203
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/Makefile.am21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README.html254
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploy.bat67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deployclient.bat63
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploywsclient.bat63
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/CalculatorClient.cpp160
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/Makefile.am55
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.bat48
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.sh47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.solution.composite29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/CalculatorWSClient.cpp186
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.cpp178
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.h85
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.bat32
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.sh30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.wsdl161
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.componentType31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.cpp89
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Divide.h34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.componentType27
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.cpp47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.h39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Makefile.am55
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.bat49
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.sh48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/sample.calculator.composite39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ChangeLog0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/GettingStarted.html133
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/INSTALL2
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/LICENSE177
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/Makefile.am36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/Makefile.am28
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/MyValueClient.cpp184
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Makefile.am39
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo.fragment39
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfo.h32
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType33
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.cpp81
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.h38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/Makefile.am27
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am34
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValue.h34
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.componentType39
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.cpp147
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.h37
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.wsdl84
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.xsd42
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.h34
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.wsdl157
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/sca.composite55
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueSubsystem/sca.subsystem30
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/runMyValueClient.sh53
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/server.wsdd40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/NEWS0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/NOTICE2
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/Makefile.am21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README.html256
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/deploy.cmd57
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/calculator_client.py50
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.bat50
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.sh49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.solution.composite32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Calculator.wsdl114
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/calculator_wsclient.py50
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.bat50
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.sh49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Calculator.wsdl161
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.componentType32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.py56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.componentType31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.py65
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.bat50
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.sh49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/README2
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/Makefile.am21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README.html239
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountDataServiceImpl.rb72
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountService.wsdl126
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountServiceImpl.rb94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteServiceImpl.rb41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteTypes.xsd40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteWebService.wsdl165
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/bigbank.account.composite53
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.bat51
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.sh48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.accountmanagement.composite29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/AccountClient.rb26
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.bat51
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.sh49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/deploy.cmd53
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/Makefile.am21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README.html253
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/deploy.cmd56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/CalculatorClient.rb25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.bat49
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.sh49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.solution.composite32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Calculator.wsdl114
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/CalculatorWSClient.rb25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.bat49
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.sh48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Calculator.wsdl114
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/CalculatorImpl.rb48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Makefile.am24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.bat49
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.sh48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo.solution.composite34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/DemoClientImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/supplychain.demo.composite41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggerImpl.componentType28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggingFacility.wsdl37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/supplychain.logging.composite34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/Manufacturer.wsdl39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/ManufacturerImpl.componentType39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/WarehouseCallback.wsdl38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/supplychain.manufacturer.composite50
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerA.solution.composite30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerB.solution.composite30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerC.solution.composite30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer.solution.composite66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/Retailer.wsdl39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/RetailerImpl.componentType37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/supplychain.retailer.composite46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/Warehouse.wsdl38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseCallbackImpl.componentType34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseImpl.componentType39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/supplychain.warehouse.composite62
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/autogen.sh31
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/samples/build.sh42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/configure.ac168
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.dsp116
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.mak214
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.dsp253
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.mak344
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.dsw77
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncbbin0 -> 140288 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.optbin0 -> 76288 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.dsp67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.mak152
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/BuildInstructions.txt0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.dsp120
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.mak189
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/build.cmd24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.dsp67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.mak155
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/BuildInstructions.txt93
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.dsw77
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncbbin0 -> 123904 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.optbin0 -> 76288 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.dsp197
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.mak328
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.dsp113
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.mak214
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.dsp120
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.mak222
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/build.cmd24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/deploy.cmd73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/wsdeploy.cmd64
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/AccountClient/AccountClient.vcproj157
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/Accounts/Accounts.vcproj270
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/BigBank.sln37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/WSAccountClient/WSAccountClient.vcproj163
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.sln39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suobin0 -> 13312 bytes
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator/Calculator.vcproj224
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Client/Client.vcproj157
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/BuildInstructions.txt95
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/WSClient.vcproj169
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/samples/scagen.bat37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/scatest.bat47
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/scatest.sh53
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/AUTHORS0
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/COPYING203
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ChangeLog0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/INSTALL10
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/LICENSE177
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/Makefile.am18
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/NEWS0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/NOTICE2
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/README0
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.c148
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.vcproj135
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl62
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCComposite.vcproj170
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType10
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.cpp38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp63
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp70
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/sca.composite19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/services.xml30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCSubsystem/sca.subsystem23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/configuration/WSEntryPointTestRPCSubsystem/sca.subsystem23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl62
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType10
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/sca.composite19
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/autogen.sh31
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/build.sh42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/configure.ac34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/deploy.cmd57
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/TestClient.c414
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/runclient.bat33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/ws.binding.service.client.vcproj138
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.sln37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.h50
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.wsdl531
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.componentType8
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.cpp158
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.h54
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/services.xml62
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.composite16
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.solution.composite27
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.vcproj170
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/Makefile.am25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/deploy.cmd58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/Makefile.am25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/datagraph.xsd77
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/importschema.xsd30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop.wsdl1814
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01-in.xml22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01.xsd33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02-in.xml27
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02.xsd36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03-in.xml22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03.xsd31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04-in.xml20
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04.xsd29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06.xsd23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07.xsd28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08.xsd35
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09.xsd30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10.xsd32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11.xsd34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12.xsd33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13.xsd36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14.xsd33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15.xsd33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16.xsd33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17-in.xml22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17.xsd42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18.xsd30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19.xsd34
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20.xsd36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21.xsd35
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22-in.xml24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22.xsd44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23.xsd35
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24-in.xml24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24.xsd40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop25-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26.xsd41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop27-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28-in.xml26
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28.xsd36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29.xsd37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30-in.xml28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30.xsd36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31.xsd39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32-in.xml32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32.xsd56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33-in.xml31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33.xsd46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34.xsd29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35.xsd29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36-in.xml21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36.xsd28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37-in.xml22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37.xsd45
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38-in.xml24
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38.xsd37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop39-in.xml22
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40-in.xml39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40.xsd49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41.xsd28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42.xsd28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43.xsd29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44.xsd29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45.xsd30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46-in.xml23
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46.xsd30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47-in.xml25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47.xsd31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50-in.xml78
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50.xsd79
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/runtest.sh31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am51
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp375
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.bat32
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.sh42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/ws.service.interop.client.vcproj139
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.sln30
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Makefile.am53
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Test.h82
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.componentType8
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.cpp509
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.h84
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.bat49
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.sh49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.composite16
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.solution.composite27
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.vcproj170
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/Makefile.am18
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/LICENSE177
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/NOTICE2
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/README19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/Makefile.am36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/build.xml155
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/CalculatorTest.java32
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/EnvHandlerTest.java47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceButNotInClassAttrTest.java90
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceTest.java47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceButNotInClassAttrTest.java47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceTest.java47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/MissingCompositeAndFragmentTest.java47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/SimplePublicPrivateProtectedTest.java48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestAllCompositesTest.java88
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestDeployAssistTool.java96
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TuscanyTestCase.java340
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go.cmd20
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_dir_option.cmd19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_input_dir.cmd19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_output_dir.cmd19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/refresh-tools-jar.cmd19
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/Calculator.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.componentType25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.h37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/sca.composite28
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorBack.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorForward.h35
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/sca.composite31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.componentType26
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.h37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.componentType25
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.h37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.fragment39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.h98
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.h38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.fragment39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.h94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.h47
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.fragment39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.h36
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.h49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValue.h40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.componentType39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.hpp43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl_stockQuote_Proxy.h38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/StockQuoteService.h37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/sca.composite60
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.fragment39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.h52
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValue.h40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.componentType39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.hpp43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl_stockQuote_Proxy.h38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/StockQuoteService.h37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/sca.composite60
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValue.h75
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp89
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/sca.composite96
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValue.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.componentType29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.hpp43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/sca.composite49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValue.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType29
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/sca.composite49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/CustomerInfo.fragmentX38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/sca.compositeX60
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.fragment39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.h49
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValue.h40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.componentType39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.hpp43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl_stockQuote_Proxy.h38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/StockQuoteService.h37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/sca.composite60
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.fragment40
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.h45
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.componentType33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.h39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.cpp67
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.cpp76
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.cpp78
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.h42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.cpp83
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.cpp78
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.h42
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.cpp83
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp596
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h90
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp414
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp506
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h86
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp342
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp75
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.h44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp75
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp184
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h84
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp184
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h82
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h44
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.cpp94
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.cpp92
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.cpp66
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.h41
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp89
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp90
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h43
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/lib/readme.txt4
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.cmd19
-rwxr-xr-xtags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.sh21
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/BodyPart.java96
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/CParsingTool.java124
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Configuration.java132
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/DirectoryTree.java105
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FileActor.java37
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FilePart.java80
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Headers.java167
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/InputCppSourceCode.java425
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MacroPart.java87
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MethodPart.java133
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Options.java164
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Parameter.java216
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/ParsingException.java48
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/PrototypePart.java56
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Signature.java506
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Utils.java548
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html58
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentDomNodeHandler.java366
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentTypeFileHandler.java130
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/CompositeOrFragmentFileHandler.java91
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DirectoryScanner.java93
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomHandler.java83
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomNodeHandler.java46
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/GenericDomNodeHandler.java220
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/LittleClass.java33
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ReferenceDomNodeHandler.java73
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/Scagen.java176
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServiceDomNodeHandler.java68
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServicesGenerator.java831
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/XMLFileActor.java208
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html159
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyCPP.xsl281
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyHeader.xsl228
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperCPP.xsl292
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperHeader.xsl191
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-core.xsd182
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-composite.xsd38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-java.xsd38
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-java.xsd39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-wsdl.xsd39
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca.xsd31
-rw-r--r--tags/cpp-1.0-incubating-M2-RC2/sca/xsd/tuscany.xsd50
885 files changed, 81136 insertions, 0 deletions
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/AUTHORS b/tags/cpp-1.0-incubating-M2-RC2/sca/AUTHORS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/AUTHORS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/COPYING b/tags/cpp-1.0-incubating-M2-RC2/sca/COPYING
new file mode 100755
index 0000000000..6b0b1270ff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/COPYING
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/ChangeLog b/tags/cpp-1.0-incubating-M2-RC2/sca/ChangeLog
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/ChangeLog
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/Developers Guide.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/Developers Guide.txt
new file mode 100644
index 0000000000..db7797b277
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/Developers Guide.txt
@@ -0,0 +1,346 @@
+Tuscany SCA For C++ Developers Guide
+====================================
+
+Contents:
+ Developing Services in C++
+ Running C++ Services
+
+
+See cpp/build.txt in the parent directory or the cpp/sca/INSTALL file
+for build instructions.
+
+Building the tools
+------------------
+
+NOTE: this is built and installed by the build step above.
+
+Currently, there is only one tool: "scagen". It can be built using the
+ant build script at \tuscany\cpp\sca\tools\scagen\build.xml.
+The default target "all" will build the java jars, documentation,
+scripts and a zip file of the whole thing. This is all the ant
+build tasks apart from "test" which runs all the junit tests.
+
+The ant build script can be altered to add the junit tests to the
+default target. Replace the line
+
+<property name="junit.jar.folder" value="${basedir}/lib" />
+
+The "test" task was not included in "all" as it requires a
+junit jar file to run. This jar is available here:
+http://www.junit.org/index.htm testing has been done with
+Junit version 3.8.1.
+
+Running the scagen tool
+-----------------------
+
+The scagen tool user interface is quite basic in this initial release.
+It can be run from the scagen.jar file using "java -jar scagen.jar"
+or from small scripts - scagen.cmd for Windows and scagen.sh for Unix.
+The parameters are:
+ -dir <the path to the sca composite root directory>
+ -output <the path to an output directory where the generated file will be placed>
+
+e.g.
+ scagen -dir c:\mycomposites\composite1 -output c:\mycomposites\bld\composite1
+
+What scagen does
+----------------
+
+The input directory passed to the scagen tools as
+the -dir parameter method is taken to be the SCA
+composite root directory. All the sca.composite and .fragment
+files in that directory are inspected to resolve all
+the <component/> elements within them.
+
+Each <component/> element found is inspected
+to see if it has a <implementation.cpp/> element within it.
+
+Each <implementation.cpp/> element should have a
+header attribute that represents a C++ header file
+that contains function prototypes for the C++
+implementation of the service. An optional class
+attribute can be used to select one class if more than
+one that is present in the header file. The default
+class is the one with the same name as the header file.
+The tool will verify that the implementation header
+contains an appropriate class prototype.
+
+The directory that contains the implementation header
+should also contain a matching .componentType file for
+the equivalent SCA component. So for example, a
+MyServiceImpl.h file would have a corresponding
+MyServiceImpl.componentType file in the same directory.
+
+Each componentType file is inspected for <service/>
+and <reference/> elements. For each <service/> element
+that is found that contains a <interface.cpp/> element
+within it,
+
+the header attribute of the <interface.cpp/> is taken
+as the filename of the C++ interface header for the
+SCA service. This C++ header file is opened and used
+as a means for specifying the SCA service resulting
+in an appropriate wrapper and proxy being generated
+for this service interface. Both method bodies and h
+eaders are generated in the given output directory.
+The processing of a <reference/> element is the same
+except that only a proxy header and implementation
+re generated.
+
+
+Getting started with the code
+-----------------------------
+
+The following is a list of tasks that are performed by the scagen tool
+for each task we will describe technically how it is accomplished and
+the location of the code that can be inspected/changed to alter the
+behaviour.
+
+Here are the tasks listed, below is a paragraph for each one:
+
+ o (Overall structure of the code)
+ o Walking the input directory
+ o Scanning the .composite and .fragment files
+ o finding the C++ implementation headers
+ o finding/checking the classname in the C++ implementation headers
+ o find the matching .componentTemplate files
+ o going into the componentTemplate files to extract the interface header filenames
+ o going into the interface header files and parsing them to extract the method signatures
+ into a network of objects we can inspect.
+ o taking all the meta data stored as objects and building a DOM for XSLT processing
+ o using XSLT to produce a proxy header
+ o using XSLT to produce a proxy implementation
+ o using XSLT to produce a wrapper header
+ o using XSLT to produce a wrapper implementation
+
+
+Overall structure of the code
+-----------------------------
+
+There are two packages org.apache.tuscany.sca.cpp.tools.common and
+org.apache.tuscany.sca.cpp.tools.services. The ...common package is
+taken from some existing code that was also contributed to axis that
+was used to parse C++ code and do various tasks like insert trace.
+This code was repackaged and shipped as a tuscany package but there
+has been a desire not to change it significantly from the equivalent
+org.apache.axis.tools.common package to leave the door open for
+future convergence.
+
+Where the ...common package has been amended (for example to cope with
+namespaces better or the provision of an Options.reset method to reset a static
+variable and enable the tuscany junit tests to run independently) these
+have been flagged with a "Tuscany" comment. The ...common package basically
+provides two functions - 1) the ability to go into a directory (see DirectoryTree.java)
+and process files that fit a particular filter (e.g. "*.hpp") by passing them to
+implementer of the FileActor Interface (see the classes "Headers" for the
+actor that processes C++ headers and "XMLFileActor" for the file actor that
+processes the .componentType and sca.composite/fragment files.)
+
+The ...services package contains the majority of code written afresh for the
+scagen tool including the subclasses of XMLFileActor (see ComponentTypeFileHandler.java
+and CompositeOrFragmentFileHandler.java) that are the classes that tie this
+package to the ...common package and which are called by the
+DirectoryTree walker.
+
+Walking the composite root input directory
+---------------------------------------
+
+The main method of the scagen class creates an instance of
+"DirectoryScanner" and registers with it a file handler of
+type "CompositeOrFragmentFileHandler" for all files that end
+in ".composite" or ".fragment". On calling the "walkTree" method
+on the scanner it will in turn call the actOnFile method on the
+CompositeOrFragmentFileHandler for appropriate files.
+
+Scanning the .composite and .fragment files
+----------------------------------------
+
+The scanning of these files by the respective "CompositeOrFragmentFileHandler"
+and "ComponentTypeFileHandler" is mostly handled by the superclass
+"XMLFileActor". This class will recursively goes through the whole
+XML file and considers the name of the XML element it finds.
+"XMLFileActor" contains a map of element names to element handlers
+that will "flatten out" the structure of the XML file "above" the
+level of node we are interested in.
+
+So for example the ComponentTypeFile handler sets up the handlers
+map as follows:
+
+ GenericDomNodeHandler gdnh = new GenericDomNodeHandler();
+ handlers.put("componentType", gdnh);
+ handlers.put("interface.cpp", gdnh);
+ ServiceDomNodeHandler sdnh = new ServiceDomNodeHandler();
+ handlers.put("service", sdnh);
+
+ ReferenceDomNodeHandler rdnh = new ReferenceDomNodeHandler();
+ handlers.put("reference", rdnh);
+
+The majority of processing done by these DomNOdeHandlers is to
+place the attributes and values discovered into another map that
+maps an (static version of) the XPath of a value to the value itself.
+So for example "/componentType/service/interface.cpp/@header" might contain
+the current ("root to here") value of the header attribute of the current
+interface.
+
+Particular handlers for the "leaves" of this tree
+such as ServiceDomNodeHandler and ReferenceDomNodeHandler
+can then consume these values from the map without having
+to be concerned with the actual names of things,
+like the service name, appearing in the key. It should be
+understood though that there are multiple values placed in the map
+for one "key" as the processing works its way through the
+XML tree. For example the processing of a second component will
+overlay its data over the same keys as the first component.
+(After "wiping" the appropriate subtree.)
+
+Finding the C++ implementation headers
+--------------------------------------
+
+The "/composite/component/implementation.cpp/@header" and
+is used to key into the name of the implementation header
+and this is opened directly and passed to the
+actOnFileMethod of a Headers object from the ...common package
+bypassing the DirectoryScanner code. The path is relative to
+the given (-dir option) composite root directory.
+
+Finding/checking the classname in the C++ implementation headers
+-----------------------------------------------------------------
+
+This implementation header is not used to define the
+methods of the SCA service but rather is opened to check
+ any given implementation.cpp/@class attribute
+(or find out the name of the implementation class
+in the header if this is not specified in the XML. This
+is done using the same method that later parses the interface
+C++ headers into java objects - we just them inspect the
+class attribute of the "Signature" objects that represent the methods
+we find in the header.
+
+Find the matching .componentType files
+------------------------------------------
+
+By SCA convention we go to the same directory as the implementation
+files and look for the XXX.componentType files with the same name.
+A instance of the ComponentDOMNodeHandler handles the data in the
+Component Element and pre-creates a ComponentTypeFileHandler that
+will eventually be called to process the .componentType file. This
+object receives a number of "setParameter" calls to poke into it
+matadata that is available prior/outside the the actual .componentType
+file it will read.
+
+Go into the componentType files to extract the interface header filenames
+-----------------------------------------------------------------------------
+
+We open up the .componentTemplateFiles with exactly the same
+mechanism as we read the sca.composite/fragment file (by creating
+a DOM and descending through it this time using a ComponentTypeFileHandler that it
+has had various data values ( e.g. the implementation class and namespace used later)
+poked into it. The ComponentTypeFileHandler itself has individual
+handlers for the service and reference XML/DOM element/nodes
+that is comes across (ServiceDomNodeHandler and ReferenceDomNodeHandler
+respectively). Each these handlers will pull out the name of
+a C++ interface header and use it to resolve the interface of the
+SCA Service.
+
+Parsing the interface header files for signatures
+-------------------------------------------------
+
+The Service/Reference DOM Node hander both call the
+ ServicesGenerator.handleInterfaceHeader(parameters, true);
+method, the second parameter is used to differentiate
+the call source as we don't need wrapper files for
+SCA references (just proxies).
+
+The ServicesGenerator uses the Headers file actor from
+the ...common package to create a List of Signature
+objects that describe the interface methods in the C++
+header.
+
+Take all the meta data stored as objects and build a DOM
+--------------------------------------------------------
+We now have a List of Signature objects and a map that
+represents the flattened information that we have pulled
+from the XML files in the ServiceGenerator class.
+We call a "createDOMofMethods" method
+to consolidate all this information into one DOM
+(this task should be split into more than one method as the
+signature/parameter list of the method is too large).
+
+Use XSLT to produce the output files (Proxy/Wrapper headers and Implementations)
+--------------------------------------------------------------------------------
+
+The ServicesGenerator.handleInterfaceHeader(parameters, forReference);
+method closes of with the code:
+
+ createProxyCPPFromDom(outputDir, dom);
+ createProxyHeaderFromDom(outputDir, dom);
+
+ if (!forReference) {
+ createWrapperCPPFromDom(outputDir, dom);
+ createWrapperHeaderFromDom(outputDir, dom);
+ }
+
+
+Each of the create methods sets up the output
+file name and a different XSLT transform and calls
+"createOutputFromDom" to transform/filter the data in the
+"model" that is held in our DOM of the data to a particular
+"view" as expressed in the C++ output file.
+
+The four XSLT style sheets are in rough order of the output
+file and this corresponds very roughly to a depth first descent
+of the DOM tree so, for example, we could have in a stylesheet:
+
+...
+ void* </xsl:text>
+ <xsl:value-of select="$class"/><xsl:text>::newImplementation()
+ {
+ return new </xsl:text><xsl:value-of select="../@implClass"/><xsl:text><xsl:text>(target);
+ }
+
+which would be output as:
+
+ void* MyClassImpl_MyClass_Proxy::newImplementation()
+ {
+ return new MyClassImpl(target)
+ }
+
+given appropriate valies for $class and "../@implClass" and
+$class might be defined to be:
+xsl:variable name="clazz">
+ <xsl:value-of select="../@implClass"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="../@nameOfServiceOrReference"/>
+ <xsl:text>_Proxy</xsl:text>
+</xsl:variable>
+
+giving "MyClassImpl_MyClass_Proxy"
+
+The stylesheets can be found in the xsl subdirectory of the
+org.apache.tuscany.sca.cpp.tools.services package.
+
+Unit Testing Scagen Code Changes
+--------------------------------
+
+The junit unit test
+ /tuscany/cpp/sca/tools/scagen/
+ junit/org/apache/tuscany/sca/cpp/tools/junit/TestAllCompositesTest.java
+
+will dynamically look for all the subdirectores of the directory
+path given by TuscanyTestCase.junit_composites and run the scagen
+tool on them as if they were composites roots.
+
+By convention an "expected_output" directory is located
+(see the CVS tree or the test program) and the actual
+and expected results compared. This testcase is thus a
+good first/basic regression test for any changes.
+
+New test cases can thus be added without having to write
+any new junit java code by by creating new SCA composites and
+the associated expected Scagen output - perhaps by using the tool
+initially and checking the output is satisfactory before copying
+it to the expected output directory at:
+
+/tuscany/cpp/sca/tools/scagen/junit/testoutput/<composite>/expected_output
+where input data is taken from
+/tuscany/cpp/sca/tools/scagen/junit/testinput/composites/<composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/GettingStarted.html b/tags/cpp-1.0-incubating-M2-RC2/sca/GettingStarted.html
new file mode 100644
index 0000000000..2ec2883e1a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/GettingStarted.html
@@ -0,0 +1,391 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("doc/css/maven-base.css");
+@import url("doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany - Getting Started</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany - Getting Started - SCA C++ Milestone release 2</H2>
+
+ <P>Tuscany SCA C++ provides a runtime implementation for the Service Component
+ Architecture 0.96 Assembly specification and the 0.95 C++ Client & Implementation specification
+ (found <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">here</A>),
+ written in C++ and currently supports C++, Python and Ruby
+ component implementation types. This page describes what is needed to install and run Tuscany
+ SCA for C++.<BR/>If you haven't already done so, the first
+ step is to download the SCA C++ Milestone release 2 of Apache Tuscany from our
+ <A HREF="http://incubator.apache.org/tuscany/downloads.html" target='_blank'>download page</A>.<BR/>
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#requirements">System Requirements</A></LI>
+ <LI><A HREF="#install">Installing Tuscany SCA..</A>
+ <UL>
+ <LI><A HREF="#linuxbin">..from the binary release on Linux</A></LI>
+ <LI><A HREF="#linuxsrc">..from the source release on Linux</A></LI>
+ <LI><A HREF="#winbin">..from the binary release on Windows</A></LI>
+ <LI><A HREF="#winsrc">..from the source release on Windows</A></LI>
+ </UL></LI>
+ <LI><A HREF="#extensions">Tuscany SCA Extensions</A></LI>
+ <LI><A HREF="#samples">Samples</A></LI>
+ <LI><A HREF="#userguide">User Guide Documents</A></LI>
+ <LI><A HREF="#help">Getting Help</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="requirements"><H2>System Requirements</H2></A>
+
+ <P>In order to run Tuscany SCA there are some
+ minimum requirements:</P>
+ <TABLE CLASS="bodyTable">
+
+ <TBODY>
+ <TR CLASS="a">
+ <TD><B>Software</B></TD>
+ <TD><B>Notes and Download Link</B></TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>Operating systems:
+ <UL>
+
+ <LI>Windows XP SP2</LI>
+ <LI>Linux</LI>
+ </UL>
+ </TD>
+ <TD>
+ Linux distributions tested on include Redhat Enterprise Linux v3, Redhat Enterprise Linux v4,
+ Ubuntu 6.06 LTS and Fedora Core 5.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>Axis2C Release 0.94</TD>
+
+ <TD>
+ <A HREF="http://ws.apache.org/axis2/c/download.cgi"
+ TARGET="_blank">http://ws.apache.org/axis2/c/download.cgi</A><BR/>
+ Please download and follow the installation instructions. Ensure you can run the Axis2C samples
+ </TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>Tuscany SDO for C++ Milestone Release 2</TD>
+
+ <TD>
+ <A HREF="http://incubator.apache.org/tuscany/download.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/download.html</A><BR/>
+ Please download and follow the installation instructions
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD><STRONG>Optional:</STRONG> Java SDK 1.4 or later</TD>
+
+ <TD>
+ <A HREF="http://java.sun.com/javase/downloads/index.jsp"
+ TARGET="_blank">http://java.sun.com/javase/downloads/index.jsp</A><BR/>
+ This is required for building and running the SCAGEN code generation tool, which is used
+ when developing Tuscany SCA C++ components. This is not required when only developing
+ Python or Ruby SCA components.
+ </TD>
+ </TR>
+ <TR CLASS="b">
+ <TD><STRONG>Optional:</STRONG> Apache Ant 1.6 or later</TD>
+
+ <TD>
+ <A HREF="http://ant.apache.org"
+ TARGET="_blank">http://ant.apache.org</A><BR/>
+ This is required for building the SCAGEN code generation tool, which is used
+ when developing Tuscany SCA C++ components. This is only required when building
+ a source distribution of Tuscany SCA C++.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD><STRONG>Optional:</STRONG> Python version 2.3.4 or later</TD>
+
+ <TD>
+ <A HREF="http://www.python.org/download/"
+ TARGET="_blank">http://www.python.org/download/</A><BR/>
+ This is required for building or running the Tuscany SCA Python extension
+ (see <A HREF="#extensions">below</A>).
+ Please download and follow the installation instructions
+ </TD>
+ </TR>
+ <TR CLASS="b">
+ <TD><STRONG>Optional:</STRONG> Ruby version 1.8.4 or later</TD>
+
+ <TD>
+ <A HREF="http://www.ruby-lang.org"
+ TARGET="_blank">http://www.ruby-lang.org</A><BR/>
+ This is required for building or running the Tuscany SCA Ruby extension
+ (see <A HREF="#extensions">below</A>).
+ Please download and follow the installation instructions
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="install"><H2>Installing Tuscany SCA for C++</H2></A>
+ <A NAME="linuxbin"><H3>Getting Tuscany SCA for C++ working with the binary release on Linux</H3></A>
+ <OL>
+ <LI>Extract the binary tar package to a folder</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the directory that was just extracted</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;/lib directory to the LD_LIBRARY_PATH <!--(Linux) or DYLD_LIBRARY_PATH (MacOS X)--> environment variable</LI>
+ </OL>
+ <A NAME="linuxsrc"><H3>Getting Tuscany SCA for C++ working with the source release on Linux</H3></A>
+ <OL>
+ <LI>Extract the source tar package to a folder &lt;tuscany_sca_install_dir&gt;</LI>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ <LI>The following environment variables are optional if you wish to build the Python or Ruby extensions
+ (see the <A HREF="doc/PythonExtension.html">Python extension</A> and
+ <A HREF="doc/RubyExtension.html">Ruby extension</A> documentation):
+ <UL>
+ <LI>PYTHON_LIB=&lt;path to Python libraries&gt;</LI>
+ <LI>PYTHON_INCLUDE=&lt;path to Python includes&gt;</LI>
+ <LI>PYTHON_VERSION=&lt;name of the Python version&gt;<BR/>
+ Note: If you are using a default installation of Python 2.3 these are usually:<BR/>
+ PYTHON_LIB=/usr/lib<BR/>
+ PYTHON_INCLUDE=/usr/include/python2.3<BR/>
+ PYTHON_VERSION=python2.3<BR/></LI>
+ <LI>RUBY_LIB=&lt;path to Ruby libraries&gt;</LI>
+ <LI>RUBY_INCLUDE=&lt;path to Ruby includes&gt;<BR/>
+ Note: If you are using a default installation of Ruby these are usually:<BR/>
+ RUBY_LIB=/usr/lib<BR/>
+ RUBY_INCLUDE=/usr/lib/ruby/1.8/i386-linux</LI>
+ </UL></LI>
+ <LI>Build the source with the following command sequence:
+ <UL>
+ <LI>./configure --prefix=&lt;tuscany_sca_install_dir&gt;/deploy --enable-static=no</LI>
+ <LI>make</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca. Use ./configure --help to see all the available options</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the &lt;tuscany_sca_install_dir&gt;/deploy
+ directory that contains the built Tuscany SCA distribution</LI>
+ </OL>
+
+ <A NAME="winbin"><H3>Getting Tuscany SCA for C++ working with the binary release on Windows</H3></A>
+ <OL>
+ <LI>Unzip the supplied zip file to a folder</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the directory that was just unzipped</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;\bin directory to the PATH environment variable</LI>
+ </OL>
+ <A NAME="winsrc"><H3>Getting Tuscany SCA for C++ working with the source release on Windows</H3></A>
+ <OL>
+ <LI>Unzip the supplied source zip file</LI>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ <LI>The following environment variables are optional if you wish to build the Python or Ruby extensions
+ (see the <A HREF="doc/PythonExtension.html">Python extension</A> and
+ <A HREF="doc/RubyExtension.html">Ruby extension</A> documentation):
+ <UL>
+ <LI>PYTHON_HOME=&lt;path to installed Python&gt;
+ <LI>RUBY_HOME=&lt;path to installed Ruby&gt;</LI>
+ </UL></LI>
+ <LI>You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.</LI>
+ <LI>Build the source:
+ <UL>
+ <LI>cd &lt;to where you unzipped the source&gt;</LI>
+ <LI>build</LI>
+ </UL>
+ This will build all the projects and put the required output into the 'deploy' directory<BR/><BR/>
+ Alternatively, open the workspace at &lt;tuscany_sca_install_dir&gt;/projects/tuscany_sca/tuscany_sca.dsw
+ in Visual Studio 6 or at at &lt;tuscany_sca_install_dir&gt;/projectsvc7/tuscany_sca/tuscany_sca.sln
+ in Visual Studio 7.1 - you can build projects individually
+ or build the samples to rebuild all the projects</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created</LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="extensions"><H2>Tuscany SCA Extensions</H2></A>
+ <P>Tuscany SCA is composed of two distinct areas: the core and extensions. The core provides the
+ implementation of the
+ <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">Service
+ Component Architecture Assembly Model specification</A>, reading composite files, loading the
+ appropriate extensions and invoking components via references and services during runtime. The
+ extensions provide the functionality required to call a component implementation (e.g. a C++ class
+ compiled into a dll) or invoke a binding (e.g. make a Web Services call).
+ </P>
+ <P>The table below details the extensions that are included with TuscanySCA for C++ Milestone
+ Release 2.
+ </P>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD><STRONG>Extension</STRONG></TD>
+ <TD><STRONG>Details</STRONG></TD>
+ </TR>
+ <TR CLASS="b">
+ <TD STYLE="vertical-align: top; white-space: nowrap;">C++
+ </TD>
+ <TD>Provides the SCA C++ client API and enables C++ component implementations
+ and interfaces. See the
+ <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ C++ Client and Implementation specification</A> for more details about the SCA C++
+ Programming Model and the <A HREF="doc/CPPComponents.html">Creating C++ SCA Components</A>
+ document for a step-by-step example.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;">Axis2C Web Services
+ </TD>
+ <TD>Provides the Web Service bindings enabling Tuscany to call SCA references via
+ Web Services or expose SCA services as Web Services. See the
+ <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ Web Service bindings specification</A> for more details about SCA Web Service support
+ and the <A HREF="doc/Axis2CWSService.html">Enabling Web Service
+ access to SCA Components</A> document for a step-by-step example.
+ </TD>
+ </TR>
+ <TR CLASS="b">
+ <TD STYLE="vertical-align: top; white-space: nowrap;">
+ <A HREF="doc/PythonExtension.html">Python</A>
+ </TD>
+ <TD>Provides a Python SCA client API and enables Python component implementations.
+ See the <A HREF="doc/PythonExtension.html">Python extension documentation</A> for
+ more details.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;">
+ <A HREF="doc/RubyExtension.html">Ruby</A>
+ </TD>
+ <TD>Provides a Ruby SCA client API and enables Ruby component implementations.
+ See the <A HREF="doc/RubyExtension.html">Ruby extension documentation</A> for
+ more details.
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="samples"><H2>Samples</H2></A>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;">SCA Technology samples
+ </TD>
+ <TD>Simple samples that emphasize how to to use
+ Service Component Architecture technology. Follow the
+ instructions on the samples <A HREF="samples/GettingStarted.html">Getting Started</A>
+ page to build and run the Tuscany SCA samples
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ <BR>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="userguide"><H2>User Guide Documents</H2></A>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/CPPComponents.html">Creating and building a Tuscany SCA C++ component</A>
+ </TD>
+ <TD>A document that describes how to create, build and run a Tuscany SCA C++ component.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/Axis2CWSService.html">Enabling Web Service access to your Tuscany SCA component</A>
+ </TD>
+ <TD>A document that describes how to expose a Tuscany SCA C++ component as a Web Service via the Tuscany Axis2C Web Service support.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/PythonExtension.html#pm">The Tuscany SCA Python Programming Model</A>
+ </TD>
+ <TD>A document that describes how to create and run a Tuscany SCA Python component.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/RubyExtension.html#pm">The Tuscany SCA Ruby Programming Model</A>
+ </TD>
+ <TD>A document that describes how to create and run a Tuscany SCA Ruby component.
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ <BR>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>The first place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+
+
+ <P>&nbsp;</P>
+
+ <P>&nbsp;</P>
+
+ <P>&nbsp;</P>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD>
+
+ <P>Thank you for your interest in Tuscany.</P> <STRONG><EM>-The
+ Tuscany Development Team</EM></STRONG>
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/INSTALL b/tags/cpp-1.0-incubating-M2-RC2/sca/INSTALL
new file mode 100644
index 0000000000..9e0a0b758a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/INSTALL
@@ -0,0 +1,2 @@
+Please read the GettingStarted.html document for information on
+building and installing Tuscany SCA for C++
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/LICENSE b/tags/cpp-1.0-incubating-M2-RC2/sca/LICENSE
new file mode 100755
index 0000000000..f433b1a53f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/Makefile.am
new file mode 100644
index 0000000000..08fe50d708
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/Makefile.am
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = tools runtime
+DIST_SUBDIRS = tools runtime samples
+datadir=$(prefix)
+
+data_DATA = INSTALL README LICENSE COPYING NOTICE GettingStarted.html
+nobase_data_DATA = xsd/*.*
+EXTRA_DIST = LICENSE COPYING INSTALL README NOTICE GettingStarted.html xsd doc
+dist-hook:
+ rm -rf `find $(distdir)/ -type d -name .svn`
+ rm -rf `find $(distdir)/ -type d -name .deps`
+
+install-data-hook:
+ rm -rf $(prefix)/samples
+ cp -r samples $(prefix)
+ rm -rf `find $(prefix)/samples -type d -name .svn`
+ rm -rf `find $(prefix)/samples -type d -name .deps`
+ rm -rf $(prefix)/doc
+ cp -r doc $(prefix)
+ rm -rf `find $(prefix)/doc -type d -name .svn`
+ rm -rf `find $(prefix)/doc -type d -name .deps`
+
+
+bindist: dist
+ rm -rf ${PACKAGE}-${PACKAGE_VERSION}
+ rm -rf ${PACKAGE}-${PACKAGE_VERSION}-src
+ rm -rf ${PACKAGE}-${PACKAGE_VERSION}-bin
+ gunzip -f ${PACKAGE}-${PACKAGE_VERSION}.tar.gz
+ tar -xf ${PACKAGE}-${PACKAGE_VERSION}.tar
+ mv ${PACKAGE}-${PACKAGE_VERSION} ${PACKAGE}-${PACKAGE_VERSION}-src
+ tar -cf - ${PACKAGE}-${PACKAGE_VERSION}-src | gzip -c > ${PACKAGE}-${PACKAGE_VERSION}-src.tar.gz
+ cd ${PACKAGE}-${PACKAGE_VERSION}-src \
+ && sh ../makebindist.sh
+ mkdir ${PACKAGE}-${PACKAGE_VERSION}-bin
+ cp -r ${PACKAGE}-${PACKAGE_VERSION}-src/deploy/* ${PACKAGE}-${PACKAGE_VERSION}-bin
+ tar -cf - ${PACKAGE}-${PACKAGE_VERSION}-bin | gzip -c > ${PACKAGE}-${PACKAGE_VERSION}-bin.tar.gz
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/NEWS b/tags/cpp-1.0-incubating-M2-RC2/sca/NEWS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/NEWS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/NOTICE b/tags/cpp-1.0-incubating-M2-RC2/sca/NOTICE
new file mode 100644
index 0000000000..bfb81409ad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/NOTICE
@@ -0,0 +1,2 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/) \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/README b/tags/cpp-1.0-incubating-M2-RC2/sca/README
new file mode 100644
index 0000000000..f61ed9af27
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/README
@@ -0,0 +1,74 @@
+Apache Tuscany C++ M2 build (October, 2006)
+===========================================
+
+http://incubator.apache.org/tuscany
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+
+Getting Started
+===============
+
+Documentation describing the system requirements and the steps to install
+Tuscany SCA C++ and run the samples can be found in the GettingStarted.html
+file.
+
+
+About Tuscany SCA C++
+=====================
+
+Tuscany SCA C++ provides a runtime implementation for the for the Service
+Component Architecture 0.96 Assembly specification and the 0.95 C++ Client
+& Implementation Model specification, written in C++ and will currently
+support C++, Python and Ruby component implementation types.
+
+The specifications can be found at
+http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications
+
+It is possible to interoperate with Tuscany SCA Java via the Web Service bindings
+for services and references but restrictions apply. This is not yet a complete
+implementation and known restrictions are described below.
+
+Supported SCA Assembly Model features
+ * All features are supported unless listed under the known restrictions
+ below. See SCA Assembly Model specification.
+
+Supported language bindings
+ * Component implementations written in C++. See the SCA C++ Client and
+ Implementation Model specification.
+ * Component implementations written in Python. See the doc/PythonExtension.html
+ documentation.
+ * Component implementations written in Python. See the doc/RubyExtension.html
+ documentation.
+ * Component interfaces described by C++ classes. See SCA Client and
+ Implementation Model specification.
+
+Supported service and reference bindings
+ * The web service binding is supported. This implementation will support
+ web services which using document literal SOAP bindings conforming to the
+ WS-I basic profile (rpc/encoded is not yet supported).
+
+Known restrictions
+ * Local service interfaces cannot use overloaded operations (the SCA
+ specification limits remote service interfaces to not using overloaded
+ operations).
+ * Each WSDL definition for a web service binding must be in a single WSDL
+ document.
+ * No load time validation of the deployed SCA application (run time
+ validation only).
+ * No metadata API.
+
+
+
+Thank you for using Tuscany!
+
+The Tuscany Team.
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/autogen.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/autogen.sh
new file mode 100755
index 0000000000..af38864985
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/autogen.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+for i in "libtoolize --force" aclocal autoconf autoheader
+do
+ echo -n "Running $i..."
+ $i || exit 1
+ echo 'done.'
+done
+
+echo -n 'Running automake...'
+automake --add-missing
+echo 'done.'
+exit 0
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/build.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/build.bat
new file mode 100644
index 0000000000..750d234152
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/build.bat
@@ -0,0 +1,32 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+@setlocal
+
+echo building Java code
+cd tools\scagen
+call ant
+
+echo building C++ code
+call vcvars32
+cd ..\..\projects\tuscany_sca
+build.cmd
+
+@endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/build.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/build.sh
new file mode 100755
index 0000000000..1be3833384
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/build.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+TUSCANY_SCACPP_HOME=`pwd`
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$PYTHON_LIB = x ]; then
+echo "PYTHON_LIB not set. Python extension will not be built"
+elif [ x$PYTHON_INCLUDE = x ]; then
+echo "PYTHON_INCLUDE not set. Python extension will not be built"
+elif [ x$PYTHON_VERSION = x ]; then
+echo "PYTHON_VERSION not set. Python extension will not be built"
+else
+echo "Building PYTHON extension with Python $PYTHON_VERSION installed at $PYTHON_LIB, $PYTHON_INCLUDE"
+ENABLE_PYTHON=--enable-python
+fi
+
+if [ x$RUBY_LIB = x ]; then
+echo "RUBY_LIB not set. Ruby extension will not be built"
+elif [ x$RUBY_INCLUDE = x ]; then
+echo "RUBY_INCLUDE not set. Ruby extension will not be built"
+else
+echo "Building Ruby extension with Ruby installed at $RUBY_LIB, $RUBY_INCLUDE"
+ENABLE_RUBY=--enable-ruby
+fi
+
+cd ${TUSCANY_SCACPP_HOME}/samples
+./autogen.sh
+
+cd $TUSCANY_SCACPP_HOME
+./autogen.sh
+
+./configure --prefix=${TUSCANY_SCACPP_HOME}/deploy --enable-static=no ${ENABLE_RUBY} ${ENABLE_PYTHON}
+make
+make install
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/configure.ac b/tags/cpp-1.0-incubating-M2-RC2/sca/configure.ac
new file mode 100644
index 0000000000..94d13b746b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/configure.ac
@@ -0,0 +1,212 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+dnl run autogen.sh to generate the configure script.
+
+AC_PREREQ(2.59)
+AC_INIT(tuscany_sca_cpp, 1.0-incubator-M2)
+AC_CANONICAL_SYSTEM
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+AC_PREFIX_DEFAULT(/usr/local/tuscany/sca)
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
+
+# Check for dynamic library suffixes
+AC_MSG_CHECKING([checking for dynamic library suffix])
+AC_CHECK_HEADER([sys/appleapiopts.h],
+ [AC_SUBST([libsuffix],[".dylib"]) AC_MSG_RESULT([using .dylib])],
+ [AC_SUBST([libsuffix],[".so"]) AC_MSG_RESULT([using .so])]
+)
+
+# Checks for libraries.
+
+# Checks for header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS([inttypes.h stdlib.h string.h sys/time.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_CONST
+AC_C_INLINE
+
+# Checks for library functions.
+AC_FUNC_CLOSEDIR_VOID
+AC_FUNC_STAT
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS([getcwd putenv strdup])
+# AC_CONFIG_SUBDIRS([samples])
+
+AC_MSG_CHECKING(whether to build all component type and binding extensions)
+AC_ARG_ENABLE(all-extensions, [AS_HELP_STRING([--enable-all-extensions],[build all runtime extensions [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_all=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_all=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_all=false ]
+)
+AM_CONDITIONAL([WANT_ALL], [test x$want_all = xtrue])
+
+AC_MSG_CHECKING(whether to build C++ component type extension)
+AC_ARG_ENABLE(cpp, [AS_HELP_STRING([--enable-cpp],[build C++ component type extension [default=yes]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_cpp=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_cpp=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(yes)
+ want_cpp=true ]
+)
+AM_CONDITIONAL([WANT_CPP], [test x$want_cpp = xtrue])
+
+AC_MSG_CHECKING(whether to build Web Service binding extension)
+AC_ARG_ENABLE(wsbinding, [AS_HELP_STRING([--enable-wsbinding],[build Web Service binding extension [default=yes]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_wsbinding=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_wsbinding=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(yes)
+ want_wsbinding=true ]
+)
+AM_CONDITIONAL([WANT_WSBINDING], [test x$want_wsbinding = xtrue])
+
+AC_MSG_CHECKING(whether to build SCA default binding extension)
+AC_ARG_ENABLE(scabinding, [AS_HELP_STRING([--enable-scabinding],[build SCA default binding extension [default=yes]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_scabinding=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_scabinding=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(yes)
+ want_scabinding=true ]
+)
+AM_CONDITIONAL([WANT_SCABINDING], [test x$want_scabinding = xtrue])
+
+AC_MSG_CHECKING(whether to build Python component type extension)
+AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build Python component type extension [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_python=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_python=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_python=false ]
+)
+AM_CONDITIONAL([WANT_PYTHON], [test x$want_python = xtrue])
+
+AC_MSG_CHECKING(whether to build Ruby component type extension)
+AC_ARG_ENABLE(ruby, [AS_HELP_STRING([--enable-ruby],[build Ruby component type extension [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_ruby=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_ruby=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_ruby=false ]
+)
+AM_CONDITIONAL([WANT_RUBY], [test x$want_ruby = xtrue])
+
+AC_MSG_CHECKING(whether to build PHP component type extension)
+AC_ARG_ENABLE(php, [AS_HELP_STRING([--enable-php],[build PHP component type extension [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_php=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_php=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_php=false ]
+)
+AM_CONDITIONAL([WANT_PHP], [test x$want_php = xtrue])
+
+AC_CONFIG_FILES([Makefile
+ tools/Makefile
+ tools/scagen/Makefile
+ runtime/Makefile
+ runtime/core/Makefile
+ runtime/core/src/Makefile
+ runtime/extensions/Makefile
+ runtime/extensions/cpp/Makefile
+ runtime/extensions/cpp/src/Makefile
+ runtime/extensions/ws/Makefile
+ runtime/extensions/ws/reference/Makefile
+ runtime/extensions/ws/reference/axis2c/Makefile
+ runtime/extensions/ws/reference/axis2c/src/Makefile
+ runtime/extensions/ws/service/Makefile
+ runtime/extensions/ws/service/axis2c/Makefile
+ runtime/extensions/ws/service/axis2c/src/Makefile
+ runtime/extensions/sca/Makefile
+ runtime/extensions/sca/reference/Makefile
+ runtime/extensions/sca/reference/axis2c/Makefile
+ runtime/extensions/sca/reference/axis2c/src/Makefile
+ runtime/extensions/sca/service/Makefile
+ runtime/extensions/sca/service/axis2c/Makefile
+ runtime/extensions/sca/service/axis2c/src/Makefile
+ runtime/extensions/python/Makefile
+ runtime/extensions/python/src/Makefile
+ runtime/extensions/ruby/Makefile
+ runtime/extensions/ruby/src/Makefile
+ runtime/extensions/php/Makefile
+ runtime/extensions/php/src/Makefile
+ ])
+AC_OUTPUT
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/doc/Axis2CWSService.html b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/Axis2CWSService.html
new file mode 100644
index 0000000000..201ee10e26
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/Axis2CWSService.html
@@ -0,0 +1,395 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("css/maven-base.css");
+@import url("css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ - Enabling Axis2C Web Services</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ - Enabling Axis2C Web Services</H2>
+
+ <P>This document describes the deployment and use of the Axis2C Web Service
+ (binding.ws) service support in the Apache Tuscany SCA C++ runtime.
+ </P>
+ <P>The WS service code is based on <A HREF="http://ws.apache.org/axis2/c">Apache
+ Axis2C version 0.94</A> and allows SCA components to be invoked via Web
+ Service calls.
+ </P>
+ <P>WS service currently supports Document/literal Wrapped style Web Services
+ only. There are also restrictions about the parameter and return types of the
+ operations in SCA components that can be exposed as Web Services, see below
+ for more details.
+ </P>
+ <P>See the <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ Web Service binding specification</A> for more details about SCA Web
+ Service support.
+ </P>
+ <P>Also, see the <A HREF="../samples/GettingStarted.html">samples</A> for various
+ demonstrations of the use of the binding.ws service support.
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#deploy">Deploying the Tuscany Web Service support to Axis2C..</A>
+ <UL>
+ <LI><A HREF="#autodeploy">..automatically via scripts</A></LI>
+ <LI><A HREF="#mandeploy">..manually</A></LI>
+ </UL></LI>
+ <LI><A HREF="#use">Defining an SCA Composite with a WS service</A></LI>
+ <LI><A HREF="#maptable">XML Schema Type to C++ Type Mapping</A></LI>
+ <LI><A HREF="#creatingwsdl">Notes on creating WSDL</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="deploy"><H2>Deploying the Tuscany Web Service support to Axis2C</H2></A>
+ <A NAME="autodeploy"><H3>Deploying via scripts</H3></A>
+ <P>Tuscany provides simple shell scripts to deploy the Web Service support to Axis2C.
+ However, the script <STRONG>will overwrite your Axis2C axis.xml file</STRONG>, so if you
+ have altered your axis2.xml from the default provided by the Axis2C distribution, it is
+ recommended that you follow the <A HREF="#mandeploy">manual deployment</A> steps
+ outlined below.
+ </P>
+ <P>To automatically deploy Tuscany Web Service support to Axis2C on Linux:
+ <OL>
+ <LI>The AXIS2C_HOME environment variable is required:
+ <UL>
+ <LI>set AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ <LI>Use the following command sequence to run the deploy script:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/extensions/ws/service</LI>
+ <LI>./deploy.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ </P>
+ <P>To automatically deploy Tuscany Web Service support to Axis2C on Windows:
+ <OL>
+ <LI>The AXIS2C_HOME environment variable is required:
+ <UL>
+ <LI>export AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ <LI>Use the following command sequence to run the deploy script:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\extensions\ws\service</LI>
+ <LI>deploy.cmd</LI>
+ </UL>
+ </LI>
+ </OL>
+ </P>
+
+
+ <A NAME="mandeploy"><H3>Deploying manually</H3></A>
+ <P>To deploy Tuscany Web Service support to Axis2C manually, use the following steps:
+ </P>
+ <OL>
+ <LI>
+ Linux:
+ <OL>
+ <LI>cd &lt;axis2c version 0.94&gt;/services</LI>
+ <LI>ln -sf &lt;tuscany_sca_install_dir&gt;/extensions/ws/service/services/tuscany</LI>
+ <LI>cd &lt;axis2c version 0.94&gt;/modules</LI>
+ <LI>ln -sf &lt;tuscany_sca_install_dir&gt;/extensions/ws/service/modules/tuscany</LI>
+ </OL>
+ Windows:
+ <OL>
+ <LI>Create a &lt;axis2c version 0.94&gt;\services\tuscany directory
+ </LI>
+ <LI>Copy all the files in &lt;tuscany_sca_install_dir&gt;\extensions\ws\service\services\tuscany
+ to the directory created above
+ </LI>
+ <LI>Create a &lt;axis2c version 0.94&gt;\modules\tuscany directory
+ </LI>
+ <LI>Copy all the files in &lt;tuscany_sca_install_dir&gt;\extensions\ws\service\modules\tuscany
+ to the directory created above
+ </LI>
+ </OL>
+ </LI>
+ <LI>Edit the &lt;axis2c version 0.94&gt;/axis2.xml file to add a &lt;ref module="tuscany"&gt;
+ element. This will register the above module. E.g.:
+ <PRE>...
+ &lt;!-- ================================================= --&gt;
+ &lt;!-- Global Modules --&gt;
+ &lt;!-- ================================================= --&gt;
+ &lt;!-- Comment this to disable Addressing --&gt;
+ &lt;module ref="addressing"/&gt;
+
+ &lt;module ref="tuscany"/&gt;
+
+... </PRE>
+ </LI>
+
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="use"><H2>Defining an SCA Composite with a WS service</H2></A>
+
+ <P>In this section we will use the Calculator sample as a worked example.
+ The Calculator code and files can be found at
+ &lt;tuscany_sca_install_dir&gt;samples/Calculator.
+ </P>
+ <P>Pre-requisites:
+ <UL>
+ <LI>At least one working component within a composite and solution
+ composite. The component(s) can be implemented in C++, Ruby or Python.
+ If this includes C++ components, the SCAGEN generated Proxy and Wrapper
+ classes and the component class files must have been compiled into a
+ .dll or .so library. The *.composite and *.componentType files must
+ also be available and working.
+ </LI>
+ </UL>
+ </P>
+ <OL>
+ <LI>Optionally, create the WSDL that defines the interface of your SCA component. See the
+ table <A HREF="#maptable">XML Schema Type to C++ Type Mapping</A> and
+ <A HREF="#creatingwsdl">Notes on creating WSDL</A> below
+ for mapping the parameters and return types of the component operations to XML
+ schema types in the WSDL. This file will need to be accessible from the component,
+ so place it in the same directory as the component or in a subdirectory.
+ <BR/>
+ See the &lt;tuscany_sca_install_dir&gt;/samples/Calculator/sample.calculator/Calculator.wsdl
+ file as an example.
+ <BR/>
+ If you do not provide a WSDL file describing the service interface then the service will
+ accept any incoming document/literal wrapped XML request that matches an operation on the
+ target service (the wrapper element name and types of the sub-elements must match the operation
+ name and its parameter types). Additionally, if the target component is a Python or Ruby
+ scripting component, it will accept any parameter type so you can pretty much pass whatever
+ data you want, as long at the incoming XML request matches to an operation name with the
+ correct number of parameters on the target service.
+ </LI>
+ <LI>Add a service definition to the component .composite file. If you have created a WSDL
+ definition, set the interface.wsdl interface attribute to the namespace and port name
+ specified in the WSDL, in the form: "&lt;namespace&gt;#wsdl.interface(&lt;port-name&gt;)".
+ Link a reference from this service definition to your
+ component, give the service a name and set the multiplicity if required.
+ <BR/>
+ E.g. for the Calculator component, based on the Calculator.wsdl file:
+ <PRE>&lt;service name="CalculatorService"&gt;
+ &lt;interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/&gt;
+ &lt;binding.ws/&gt;
+ &lt;reference&gt;CalculatorComponent/CalculatorService&lt;/reference&gt;
+&lt;/service&gt;</PRE>
+ If the Calculator.wsdl file were not included, the service definition would simply
+ be as follows:
+ <PRE>&lt;service name="CalculatorService"&gt;
+ &lt;binding.ws/&gt;
+ &lt;reference&gt;CalculatorComponent/CalculatorService&lt;/reference&gt;
+&lt;/service&gt;</PRE>
+ </LI>
+ <LI>You are now ready to start the Axis2C HTTP server. Remember you will need to have the
+ TUSCANY_SCACPP, TUSCANY_SDOCPP and AXIS2C_HOME environment variables set,
+ as well as the SCA and SDO bin directories and the Axis2C lib directory on
+ your PATH on Windows or the SCA, SDO and Axis2C lib directories on
+ your LD_LIBRARY_PATH on Linux. You will also need to set the TUSCANY_SCACPP_SYSTEM_ROOT
+ and TUSCANY_SCACPP_DEFAULT_COMPONENT environment variables to the
+ path to your SCA component directory structure and the default component respectively.
+ E.g. on Windows run the following commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP=C:/tuscany_sca </LI>
+ <LI>set TUSCANY_SDOCPP=C:/tuscany_sdo </LI>
+ <LI>set AXIS2C_HOME=C:/axis2c-bin-0.94-win32 </LI>
+ <LI>set PATH=%PATH%;C:/tuscany_sca/bin;C:/tuscany_sdo/bin;C:/axis2c-bin-0.94-win32/lib</LI>
+ <LI>set TUSCANY_SCACPP_SYSTEM_ROOT=C:/tuscany_sca/samples/Calculator/deploy </LI>
+ <LI>set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent </LI>
+ <LI>cd %AXIS2C_HOME%/bin/ </LI>
+ <LI>./axis2_http_server.exe </LI>
+ </UL>
+ </LI>
+ <LI>Optionally, enable Tuscany logging by setting the TUSCANY_SCACPP_LOGGING
+ environment variable with the level you wish to log at (0 for minimal
+ logging, up to 9 for more detailed logging) and the TUSCANY_SCACPP_LOG
+ environment variable to define the file to log to (if this is not set,
+ logging will go to the console). E.g. on Windows run the following
+ commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP_LOGGING=5 </LI>
+ <LI>set TUSCANY_SCACPP_LOG=C:/tuscany/mylogfile.txt</LI>
+ </UL>
+ </LI>
+ </OL>
+ <P>Your component should now be exposed as an Axis2C Web Service, via the WS
+ service you created. See the Axis2C documentation for writing clients to
+ invoke the Web Service, or you can use any other Web Service client platform
+ (e.g. <A HREF="http://ws.apache.org/axis2">Axis2 for Java</A>), or you can
+ invoke your service from another SCA application by using Tuscany's WS
+ reference support.
+ </P>
+
+ </DIV>
+
+ <DIV CLASS="section">
+ <A name="maptable"><H2>XML Schema Type to C++ Type Mapping</H2></A>
+ <P>To help define the WSDL that describes the interface of your component, the
+ table below lists how incoming XML data in Web Service messages is mapped to
+ C++ types used in the parameters and return types of your component operations.
+ </P>
+ <P>This lists the only C++ types that can currently be used on the operations of a
+ component exposed as a Web Service. For other types, use an SDO DataObject to
+ wrap the data, and define that wrapping as a complexType in the WSDL. See the
+ <A HREF="http://www.osoa.org/display/Main/SDO+-+Previously+Published+Specifications">SDO
+ specifications</A> for the C++ types that SDO supports.
+ </P>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD><STRONG>XML Schema Type</STRONG></TD>
+ <TD><STRONG>C++ Type</STRONG></TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>string</TD>
+ <TD>std::string</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>int</TD>
+ <TD>long</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>integer</TD>
+ <TD>long</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>short</TD>
+ <TD>short</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>float</TD>
+ <TD>float</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>double</TD>
+ <TD>long double</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>boolean</TD>
+ <TD>bool</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>hexBinary</TD>
+ <TD>char*</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>base64Binary</TD>
+ <TD>char*</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>byte</TD>
+ <TD>char</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>complexType</TD>
+ <TD>commonj::sdo::DataObjectPtr</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>any</TD>
+ <TD>commonj::sdo::DataObjectPtr with OpenDataObjectType</TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A name="creatingwsdl"><H2>Notes on creating WSDL</H2></A>
+ <P>Currently only Document/literal Wrapped style Web Services are supported by
+ WS EntryPoint, support for RPC style Web Services is planned for future
+ releases.
+ </P>
+ <P>See <A HREF="http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/">this article</A>
+ for an explanation of Document/literal Wrapped style WSDL and Web Services
+ </P>
+ <P>Document/literal Wrapped services require that the operation name is used as
+ the name of the incoming element that wraps the operation parameters. Additionally,
+ operation parameter and return messages that are defined in the WSDL must be
+ XML Schema elements containing a complexType.
+ </P>
+ <P>For example, a component operation defined in C++ as:
+ <PRE>long myOperation(std::string arg1, short arg2, DataObjectPtr arg3);</PRE>
+ will need to be described in WSDL with messages like:
+ <PRE>&lt;wsdl:message name="myOperationRequestMsg"&gt;
+ &lt;wsdl:part element="tns:myOperation" name="myOperationRequestPart"/&gt;
+&lt;/wsdl:message&gt;
+&lt;wsdl:message name="myOperationResponseMsg"&gt;
+ &lt;wsdl:part element="tns:myOperationResponse" name="myOperationResponsePart"/&gt;
+&lt;/wsdl:message&gt;</PRE>
+ and will need an XML schema to define the types like:
+ <PRE>&lt;xsd:element name="myOperation"&gt;
+ &lt;xsd:complexType&gt;
+ &lt;xsd:sequence&gt;
+ &lt;xsd:element name="arg1" type="xsd:string" minOccurs="1"/&gt;
+ &lt;xsd:element name="arg2" type="xsd:short" minOccurs="1"/&gt;
+ &lt;xsd:element name="arg3" minOccurs="1"&gt;
+ &lt;xsd:complexType&gt;
+ &lt;xsd:sequence&gt;
+ &lt;xsd:element name="dataObjectFloatData" type="xsd:float"/&gt;
+ &lt;xsd:element name="dataObjectStringData" type="xsd:string"/&gt;
+ &lt;xsd:element name="dataObjectIntData" type="xsd:int"/&gt;
+ &lt;/xsd:sequence&gt;
+ &lt;/xsd:complexType&gt;
+ &lt;/xsd:element&gt;
+ &lt;/xsd:sequence&gt;
+ &lt;/xsd:complexType&gt;
+&lt;/xsd:element&gt;
+
+&lt;xsd:element name="myOperationResponse"&gt;
+ &lt;xsd:complexType&gt;
+ &lt;xsd:sequence&gt;
+ &lt;xsd:element name="result" type="xsd:int" minOccurs="1"/&gt;
+ &lt;/xsd:sequence&gt;
+ &lt;/xsd:complexType&gt;
+&lt;/xsd:element&gt;</PRE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/doc/CPPComponents.html b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/CPPComponents.html
new file mode 100644
index 0000000000..4994d4c610
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/CPPComponents.html
@@ -0,0 +1,333 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("css/maven-base.css");
+@import url("css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ - Creating C++ SCA Components</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ - Creating C++ SCA Components</H2>
+
+ <P>This document describes how to create and run SCA components in Tuscany SCA C++
+ milestone release 2.
+ </P>
+ <P>See the <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ C++ Client and Implementation specification</A> for more details about the SCA C++
+ programming model.
+ </P>
+ <P>See <A HREF="../samples/Calculator/README.html">Calculator</A> or
+ <A HREF="../samples/BigBank/README.html">BigBank</A> for samples that
+ demonstrate the use of C++ components
+ </P>
+ </DIV>
+ <DIV CLASS="section">
+ <H2>Creating and deploying an SCA C++ Component</H2>
+ <P>Each SCA C++ component needs:
+ </P>
+ <UL>
+ <LI>A service header file that defines the operations that can be invoked on the
+ component
+ </LI>
+ <LI>An implementation header file that defines the implementation and extends
+ the service header file
+ </LI>
+ <LI>A C++ implementation of the service that implements the operations defined
+ in the service header file
+ </LI>
+ <LI>Proxy and wrapper header and implementation files generated by the Tuscany
+ C++ SCAGEN tool
+ </LI>
+ <LI>A service definition in a .componentType file
+ </LI>
+ <LI>An SCDL component definition within an SCDL composite file. Usually this
+ composite file will contain multiple components configured and assembled together.
+ </LI>
+ </UL>
+ <P>Once these items are in place for each component in your composite, you will need to
+ deploy this composite to your SCA system. In this release we are
+ using the SCA recursive composition model to do this. You simply create another
+ SCDL component definition in a separate composite file that will represent the composite
+ you created above in the SCA system. Follow the steps below to see each of these items
+ being created and used.
+ </P>
+ <P>In this section we will use the Calculator sample as a worked example.
+ The Calculator code and files can be found at samples/Calculator and has been
+ developed further than the details specified below. In the interests of
+ readability, the example used below takes the simplest path.
+ </P>
+ <OL>
+ <LI>Create the service header file that defines the operations your component
+ will implement. E.g. Calculator.h contains the following:<BR/>
+ <PRE>#ifndef CALCULATOR_H
+#define CALCULATOR_H
+class Calculator
+{
+public:
+ virtual float add(float arg1, float arg2) = 0;
+ virtual float sub(float arg1, float arg2) = 0;
+ virtual float mul(float arg1, float arg2) = 0;
+ virtual float div(float arg1, float arg2) = 0;
+};
+
+#endif</PRE>
+ </LI>
+ <LI>Create the implementation header file that extends the service header file.
+ E.g. CalculatorImpl.h contains the following:<BR/>
+ <PRE>#ifndef CALCULATORIMPL_H
+#define CALCULATORIMPL_H
+
+#include "Calculator.h"
+
+class CalculatorImpl : public Calculator
+{
+public:
+ CalculatorImpl();
+ virtual ~CalculatorImpl();
+
+ // Calculator interface
+ virtual float add(float arg1, float arg2);
+ virtual float sub(float arg1, float arg2);
+ virtual float mul(float arg1, float arg2);
+ virtual float div(float arg1, float arg2);
+};
+
+#endif</PRE>
+ </LI>
+ <LI>Create the implementation for the component based on the implementation
+ header file. E.g. CalculatorImpl.cpp contains the following code:<BR/>
+ <PRE>#include "CalculatorImpl.h"
+#include <stdio.h>
+
+CalculatorImpl::CalculatorImpl()
+{
+}
+
+CalculatorImpl::~CalculatorImpl()
+{
+}
+
+// Calculator interface
+float CalculatorImpl::add(float arg1, float arg2)
+{
+ float result = arg1 + arg2;
+
+ printf("CalculatorImpl::add %f + %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::sub(float arg1, float arg2)
+{
+ float result = arg1 - arg2;
+ printf("CalculatorImpl::sub %f - %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::div(float arg1, float arg2)
+{
+ float result = arg1 / arg2;
+ printf("CalculatorImpl::div %f / %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::mul(float arg1, float arg2)
+{
+ float result = arg1 * arg2;
+ printf("CalculatorImpl::mul %f * %f = %f\n", arg1, arg2, result);
+ return result;
+}</PRE>
+ </LI>
+ <LI>Create the componentType file for your component to define the service that
+ your component provides. The file must be named after your implementation
+ class and specifies the name of the service and the service header file
+ (which describes the service operations). E.g. CalculatorImpl.componentType
+ contains the following XML:<BR/>
+ <PRE>&lt;componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"&gt;
+
+ &lt;service name="CalculatorService"&gt;
+ &lt;interface.cpp header="Calculator.h"/&gt;
+ &lt;/service&gt;
+
+&lt;/componentType&gt;</PRE>
+ </LI>
+ <LI>Create a sample.calculator.composite file for your composite and define your
+ component within it. The component definition specifies the implementation
+ library to use (a .dll file on Windows and a .so file on Linux) and the
+ implementation header file (which describes the implementation class). Component
+ properties and references to other services can also be specified here. E.g. the
+ Calculator sample.calculator.composite file contains the following XML:<BR/>
+ <PRE>&lt;composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator"&gt;
+
+ &lt;component name="CalculatorComponent"&gt;
+ &lt;implementation.cpp library="Calculator" header="CalculatorImpl.h"/&gt;
+ &lt;/component&gt;
+
+&lt;/composite&gt;</PRE>
+ </LI>
+ <LI>Generate the proxy and wrapper classes and header files using the SCAGEN
+ tool. These classes are used by the Tuscany SCA C++ runtime to enable
+ service implementations to be invoked from a client or another component.
+ Run the SCAGEN tool, specifying the directory where your header files,
+ sca.composite and componentType file are and the directory where you
+ want the generated files to be placed. E.g. on Windows, the
+ following command is run from the directory where Tuscany SCA is deployed:<BR/>
+ <PRE>./bin/scagen.cmd -dir ./samples/Calculator/sample.calculator -output ./samples/Calculator/sample.calculator</PRE>
+ which produces the following files:
+ <UL>
+ <LI>CalculatorImpl_CalculatorService_Proxy.h</LI>
+ <LI>CalculatorImpl_CalculatorService_Proxy.cpp</LI>
+ <LI>CalculatorImpl_CalculatorService_Wrapper.h</LI>
+ <LI>CalculatorImpl_CalculatorService_Wrapper.cpp</LI>
+ </UL>
+ </LI>
+ <LI>Compile and link the code that has been written and generated. This will
+ produce a .dll or .so library file. The name should match the library name
+ specified in the sample.calculator.composite file.
+ </LI>
+ <LI>Create the sample.calculator.solution.composite file and define the Calculator composite
+ as a component within it. This is used to include the Calculator composite in the SCA system
+ and should specify the composite name used in the sample.calculator.composite file.
+ E.g. the Calculator sample.calculator.solution.composite
+ file contains the following XML:<BR/>
+ <PRE>&lt;composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.solution"&gt;
+
+ &lt;component name="sample.calculator.CalculatorComponent"&gt;
+ &lt;implementation.composite name="sample.calculator" /&gt;
+ &lt;/component&gt;
+
+&lt;/composite&gt;</PRE>
+ </LI>
+ <LI>Deploy the various files into the SCA directory structure, as follows:
+ <UL>
+ <LI>&lt;deploy_root&gt;/CompositeName/CompositeName.composite </LI>
+ <LI>&lt;deploy_root&gt;/CompositeName/Implementation.componentType </LI>
+ <LI>&lt;deploy_root&gt;/CompositeName/Implementation.dll (or .so on Linux) </LI>
+ <LI>&lt;deploy_root&gt;/SolutionName.composite </LI>
+ </UL>
+ E.g. for the Calculator sample the structure is:
+ <UL>
+ <LI>samples/Calculator/deploy/sample.calculator/Calculator.h </LI>
+ <LI>samples/Calculator/deploy/sample.calculator/CalculatorImpl.h </LI>
+ <LI>samples/Calculator/deploy/sample.calculator/sample.calculator.composite </LI>
+ <LI>samples/Calculator/deploy/sample.calculator/CalculatorImpl.componentType</LI>
+ <LI>samples/Calculator/deploy/sample.calculator/Calculator.dll </LI>
+ <LI>samples/Calculator/deploy/sample.calculator.solution.composite</LI>
+ </UL>
+ </LI>
+ <LI>Your component, composite and subsystem are now ready to be invoked. Create a
+ client that will call the service. E.g. the Calculator client (in the
+ CalculatorClient.cpp file) contains code similar to the following:<BR/>
+ <PRE>try
+{
+ // Locate the service
+ CompositeContext myContext = CompositeContext::getCurrent();
+ Calculator *calcService = (Calculator*) myContext.locateService("CalculatorComponent/CalculatorService");
+ if (calcService == 0)
+ {
+ cout &lt;&lt; "calculator_client: Unable to find Calculator service" &lt;&lt; endl;
+ }
+ else
+ {
+ float result = calcService-&gt;add(arg1, arg2);
+ cout &lt;&lt; "calculator_client add(" &lt;&lt; arg1 &lt;&lt; "," &lt;&lt; arg2 &lt;&lt; ") = " &lt;&lt; result &lt;&lt; endl;
+ }
+}
+catch (ServiceRuntimeException& ex)
+{
+ cout &lt;&lt; "calculator_client: Error whilst invoking Tuscany: " &lt;&lt;
+ ex.getMessageText() &lt;&lt; endl;
+}
+</PRE>
+ </LI>
+ <LI>Compile, link and run the client that has been created. You should
+ (hopefully!) see your component invoked. Remember you will need to have the
+ TUSCANY_SCACPP, TUSCANY_SDOCPP and AXIS2C_HOME environment variables set,
+ as well as the SCA and SDO bin directories and the Axis2C lib directory on
+ your PATH on Windows or the SCA, SDO and Axis2C lib directories on
+ your LD_LIBRARY_PATH on Linux. You will also need to set the TUSCANY_SCACPP_SYSTEM_ROOT
+ and TUSCANY_SCACPP_DEFAULT_COMPONENT environment variables to the
+ path to your SCA component directory structure and the default component respectively.
+ TUSCANY_SCACPP_SYSTEM_ROOT is the directory where the SCA runtime will look for any
+ .composite files and TUSCANY_SCACPP_DEFAULT_COMPONENT is the name of the base component
+ to be used by SCA clients or containers when finding services - this component must be
+ an instance of a composite (i.e. contain an &lt;implementation.composite&gt; element).
+ <BR/>
+ E.g. on Windows run the following commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP=C:/tuscany_sca </LI>
+ <LI>set TUSCANY_SDOCPP=C:/tuscany_sdo </LI>
+ <LI>set AXIS2C_HOME=C:/axis2c-bin-0.94-win32 </LI>
+ <LI>set PATH=%PATH%;C:/tuscany_sca/bin;C:/tuscany_sdo/bin;C:/axis2c-bin-0.94-win32/lib</LI>
+ <LI>set TUSCANY_SCACPP_SYSTEM_ROOT=C:/tuscany_sca/samples/Calculator/deploy </LI>
+ <LI>set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent </LI>
+ <LI>./calculator_client.exe </LI>
+ </UL>
+ </LI>
+ <LI>Optionally, enable Tuscany logging by setting the TUSCANY_SCACPP_LOGGING
+ environment variable with the level you wish to log at (0 for minimal
+ logging, up to 9 for more detailed logging) and the TUSCANY_SCACPP_LOG
+ environment variable to define the file to log to (if this is not set,
+ logging will go to the console). E.g. on Windows run the following
+ commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP_LOGGING=5 </LI>
+ <LI>set TUSCANY_SCACPP_LOG=C:/tuscany/mylogfile.txt</LI>
+ </UL>
+ </LI>
+ </OL>
+ <P>The Calculator sample has been developed further than the details specified
+ above. In particular, it demonstrates how two services can be wired together
+ such that one references and invokes the other. It also demonstrates how to
+ expose the Calculator component service as an Axis2C Web Service.
+ </P>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/doc/PythonExtension.html b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/PythonExtension.html
new file mode 100644
index 0000000000..65691b89e2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/PythonExtension.html
@@ -0,0 +1,296 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("css/maven-base.css");
+@import url("css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ - Python Extension</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ - Python Extension</H2>
+
+ <P>The Tuscany Python extension allows Python scripts to be used as components in
+ SCA composites and as clients that can invoke SCA services.
+ </P>
+ <P>See <A HREF="../samples/PythonCalculator/README.html">PythonCalculator</A> for
+ a sample that demonstrates the use of the Python extension.
+ </P>
+ </DIV>
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#requirements">System Requirements</A></LI>
+ <LI><A HREF="#install">Installing the Tuscany SCA Python Extension..</A>
+ <UL>
+ <LI><A HREF="#linuxbin">..from the binary release on Linux</A></LI>
+ <LI><A HREF="#linuxsrc">..from the source release on Linux</A></LI>
+ <LI><A HREF="#winbin">..from the binary release on Windows</A></LI>
+ <LI><A HREF="#winsrc">..from the source release on Windows</A></LI>
+ </UL></LI>
+ <LI><A HREF="#pm">The Tuscany Python Programming Model</A></LI>
+ <UL>
+ <LI><A HREF="#clients">Clients</A></LI>
+ <LI><A HREF="#components">SCA Components</A></LI>
+ <LI><A HREF="#references">Component references</A></LI>
+ <LI><A HREF="#properties">Component properties</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="requirements"><H2>System Requirements</H2></A>
+
+ <P>In order to install and use the Tuscany SCA Python Extension there are some
+ extra requirements in addition to the <A HREF="../GettingStarted.html#requirements">Tuscany
+ SCA requirements</A>:</P>
+ <TABLE CLASS="bodyTable">
+
+ <TBODY>
+ <TR CLASS="a">
+ <TD><B>Software</B></TD>
+ <TD><B>Download Link</B></TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>Python version 2.3.4 or higher</TD>
+
+ <TD>
+ <A HREF="http://www.python.org/download/"
+ TARGET="_blank">http://www.python.org/download/</A><BR/>
+ Please download and follow the installation instructions
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="install"><H2>Installing the Tuscany SCA Python Extension</H2></A>
+ <A NAME="linuxbin"><H3>Getting the Tuscany SCA Python Extension working with the binary release on Linux</H3></A>
+ <OL>
+ <LI>Extract the binary tar package to a folder</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the directory that was just extracted</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;/lib directory to the LD_LIBRARY_PATH <!--(Linux) or DYLD_LIBRARY_PATH (MacOS X)--> environment variable</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;/extensions/python/lib directory to the PYTHONPATH environment variable</LI>
+ </OL>
+ <A NAME="linuxsrc"><H3>Getting the Tuscany SCA Python Extension working with the source release on Linux</H3></A>
+ <OL>
+ <LI>You will need the Tuscany SCA and SDO libraries - follow the instructions
+ <A HREF="../GettingStarted.html">here</A> to build the SCA libraries and default extensions</LI>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to built Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>PYTHON_LIB=&lt;path to Python libraries&gt;</LI>
+ <LI>PYTHON_INCLUDE=&lt;path to Python includes&gt;</LI>
+ <LI>PYTHON_VERSION=&lt;name of the Python version&gt;<BR/>
+ Note: If you are using a default installation of Python 2.3 these are usually:<BR/>
+ PYTHON_LIB=/usr/lib<BR/>
+ PYTHON_INCLUDE=/usr/include/python2.3<BR/>
+ PYTHON_VERSION=python2.3<BR/></LI>
+ </UL></LI>
+ <LI>Build the Python source only with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;</LI>
+ <LI>./configure --prefix=$TUSCANY_SCACPP --enable-python --enable-cpp=no</LI>
+ <LI>make</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca</LI>
+ </OL>
+
+ <A NAME="winbin"><H3>Getting the Tuscany SCA Python Extension working with the binary release on Windows</H3></A>
+ <OL>
+ <LI>Unzip the supplied zip file to a folder</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the directory that was just unzipped</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;\bin directory to the PATH environment variable</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;\extensions\python\bin directory to the PYTHONPATH environment variable</LI>
+ </OL>
+ <A NAME="winsrc"><H3>Getting the Tuscany SCA Python Extension working with the source release on Windows</H3></A>
+ <OL>
+ <LI>Unzip the supplied source zip file</LI>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to built Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>PYTHON_HOME=&lt;path to installed Python&gt;
+ </UL></LI>
+ <LI>You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.</LI>
+ <LI>Build the source:
+ <UL>
+ <LI>cd &lt;to where you unzipped the source&gt;</LI>
+ <LI>build</LI>
+ </UL>
+ This will build all the projects and put the required output into the 'deploy' directory<BR/><BR/>
+ Alternatively, open the workspace at &lt;tuscany_sca_install_dir&gt;/projects/tuscany_sca/tuscany_sca.dsw
+ in Visual Studio 6 or at at &lt;tuscany_sca_install_dir&gt;/projectsvc7/tuscany_sca/tuscany_sca.sln
+ in Visual Studio 7.1 - you can build projects individually
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created</LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="pm"><H2>The Tuscany Python Programming Model</H2></A>
+ <P>This section will explain
+ the Tuscany Python programming model to help you to write your own Python
+ components and clients.
+ </P>
+ <P>The Tuscany Python component and client support comes from a Python extension
+ package that is built in the &lt;tuscany_sca_install_dir&gt;/extensions/python/bin
+ directory on Windows and &lt;tuscany_sca_install_dir&gt;/extensions/python/lib on
+ Linux. This package must be made available to your Python environment by
+ adding this directory to your PYTHONPATH environment variable. This makes the sca
+ module available for use by clients and allows references and properties to be
+ used in your Python components
+ </P>
+ <A NAME="clients"><H3>Clients</H3></A>
+ <P>Using the sca module, a Python client can search for an SCA service with:
+ </P>
+<PRE>import sca
+
+calculator = sca.locateservice("CalculatorComponent/CalculatorService")
+</PRE>
+ <P>This finds the component and service as defined in the composite and componentType
+ side files and returns a proxy object that can call the SCA service. You can then
+ simply call a business method on "calculator", like this:
+ </P>
+<PRE>result = calculator.add(12.3, 45.6)</PRE>
+ </P>
+ <A NAME="components"><H3>Components</H3></A>
+ <P>Python component implementations are standard Python scripts, where class-level
+ functions or module-level functions can be invoked by the Tuscany runtime. To
+ use a Python component implementation, use the implementation.python element in
+ your .composite file. For example, the following snippet will use the Python script
+ at path/to/module/PythonModuleName.py, where the path is relative to the location of
+ the composite file:
+ </P>
+<PRE>&lt;implementation.python module="PythonModuleName" path="path/to/module"/&gt;
+</PRE>
+ <P>To instantiate a class instance and use a class-level function, the Python class must
+ have a default constructor (an __init__ method that takes no arguments besides
+ 'self') and the class attribute must be defined in the implementation.python element
+ in your composite, like so:
+ </P>
+<PRE>&lt;implementation.python module="PythonModuleName" path="relative/path/to/module" class="PythonClassName"/&gt;
+</PRE>
+ <P>Tuscany currently only supports passing simple types (strings, ints, floats, etc) into
+ and out of Python components. Support for more complex types, such as Service Data Objects,
+ will be added in later releases.
+ </P>
+ <P>Additionally, Tuscany currently requires a componentType file that corresponds to the
+ name of the Python module, e.g. for the Python Calculator sample, the module name is
+ 'CalculatorImpl' and the componentType file is 'CalculatorImpl.componentType'. The
+ componentType file specifies what services are available on the component and which
+ references are called by the component. For example, CalculatorImpl.componentType
+ contains the following:
+ </P>
+<PRE>&lt;componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"&gt;
+ &lt;service name="CalculatorService"&gt;
+ &lt;interface.python/&gt;
+ &lt;/service&gt;
+ &lt;reference name="divideService"&gt;
+ &lt;interface.python/&gt;
+ &lt;/reference&gt;
+&lt;/componentType&gt;
+</PRE>
+ <A NAME="references"><H3>References</H3></A>
+ <P>References are automatically added to your Python component implementation when
+ the runtime loads the implementation script, so they can be used like so:
+ </P>
+<PRE># The module-level div function
+def div(val1, val2):
+ # Use the divideService reference
+ result = divideService.divide(val1, val2)
+ return result
+</PRE>
+ <P>and in your composite file:
+ </P>
+<PRE>&lt;component name="CalculatorComponent"&gt;
+ &lt;implementation.python module="CalculatorImpl"/&gt;
+ &lt;reference name="divideService"&gt;DivideComponent/DivideService&lt;/reference&gt;
+&lt;/component&gt;
+</PRE>
+ <A NAME="properties"><H3>Properties</H3></A>
+ <P>A composite with a property defined for a component like so:
+ </P>
+<PRE>&lt;component name="DivideComponent"&gt;
+ &lt;implementation.python module="DivideImpl"/&gt;
+ &lt;property name="doRounding"&gt;true&lt;/property&gt;
+&lt;/component&gt;
+</PRE>
+ <P>and in the associated .componentType file like so:
+ </P>
+<PRE>&lt;componentType ...
+...
+ &lt;property name="doRounding" type="xsd:boolean"/&gt;
+&lt;/componentType&gt;
+</PRE>
+ <P>means the property is automatically instantiated and assigned the
+ property value in the Python component implementation, so it can be
+ used like so:
+ </P>
+<PRE>def divide(val1, val2):
+ result = float(val1) / float(val2)
+ print "Python - DivideImpl.divide " + str(val1) + " / " + str(val2) + " = " + str(result)
+
+ # Use the doRounding property
+ if doRounding:
+ result = round(result)
+ print "Python - DivideImpl.divide is rounding the result to " + str(result)
+
+ return result
+</PRE>
+</P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/doc/RubyExtension.html b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/RubyExtension.html
new file mode 100644
index 0000000000..352666338d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/RubyExtension.html
@@ -0,0 +1,288 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("css/maven-base.css");
+@import url("css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ - Ruby Extension</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ - Ruby Extension</H2>
+
+ <P>The Tuscany Ruby extension allows Ruby scripts to be used as components in
+ SCA composites and as clients that can invoke SCA services.
+ </P>
+ <P>See <A HREF="../samples/RubyCalculator/README.html">RubyCalculator</A> and
+ <A HREF="../samples/RubyBank/README.html">RubyBank</A> for
+ two samples that demonstrate the use of the Ruby extension.
+ </P>
+ </DIV>
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#requirements">System Requirements</A></LI>
+ <LI><A HREF="#install">Installing the Tuscany SCA Ruby Extension..</A>
+ <UL>
+ <LI><A HREF="#linuxbin">..from the binary release on Linux</A></LI>
+ <LI><A HREF="#linuxsrc">..from the source release on Linux</A></LI>
+ <LI><A HREF="#winbin">..from the binary release on Windows</A></LI>
+ <LI><A HREF="#winsrc">..from the source release on Windows</A></LI>
+ </UL></LI>
+ <LI><A HREF="#pm">The Tuscany Ruby Programming Model</A></LI>
+ <UL>
+ <LI><A HREF="#clients">Clients</A></LI>
+ <LI><A HREF="#components">SCA Components</A></LI>
+ <LI><A HREF="#references">Component references</A></LI>
+ <LI><A HREF="#properties">Component properties</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="requirements"><H2>System Requirements</H2></A>
+
+ <P>In order to install and use the Tuscany SCA Ruby Extension there are some
+ extra requirements in addition to the <A HREF="../GettingStarted.html#requirements">Tuscany
+ SCA requirements</A>:</P>
+ <TABLE CLASS="bodyTable">
+
+ <TBODY>
+ <TR CLASS="a">
+ <TD><B>Software</B></TD>
+ <TD><B>Download Link</B></TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>Ruby version 1.8.4 or higher</TD>
+
+ <TD>
+ <A HREF="http://www.ruby-lang.org"
+ TARGET="_blank">http://www.ruby-lang.org</A><BR/>
+ Please download and follow the installation instructions
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="install"><H2>Installing the Tuscany SCA Ruby Extension</H2></A>
+ <A NAME="linuxbin"><H3>Getting the Tuscany SCA Ruby Extension working with the binary release on Linux</H3></A>
+ <OL>
+ <LI>Extract the binary tar package to a folder</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the directory that was just extracted</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;/lib directory to the LD_LIBRARY_PATH <!--(Linux) or DYLD_LIBRARY_PATH (MacOS X)--> environment variable</LI>
+ </OL>
+ <A NAME="linuxsrc"><H3>Getting the Tuscany SCA Ruby Extension working with the source release on Linux</H3></A>
+ <OL>
+ <LI>You will need the Tuscany SCA and SDO libraries - follow the instructions
+ <A HREF="../GettingStarted.html">here</A> to build the SCA libraries and default extensions</LI>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to built Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>RUBY_LIB=&lt;path to Ruby libraries&gt;</LI>
+ <LI>RUBY_INCLUDE=&lt;path to Ruby includes&gt;<BR/>
+ Note: If you are using a default installation of Ruby these are usually:<BR/>
+ RUBY_LIB=/usr/lib<BR/>
+ RUBY_INCLUDE=/usr/lib/ruby/1.8/i386-linux</LI>
+ </UL></LI>
+ <LI>Build the Ruby source only with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;</LI>
+ <LI>./configure --prefix=$TUSCANY_SCACPP --enable-ruby --enable-cpp=no</LI>
+ <LI>make</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide a --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca</LI>
+ </OL>
+
+ <A NAME="winbin"><H3>Getting the Tuscany SCA Ruby Extension working with the binary release on Windows</H3></A>
+ <OL>
+ <LI>Unzip the supplied zip file to a folder</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the directory that was just unzipped</LI>
+ <LI>Add the &lt;tuscany_sca_install_dir&gt;\bin directory to the PATH environment variable</LI>
+ </OL>
+ <A NAME="winsrc"><H3>Getting the Tuscany SCA Ruby Extension working with the source release on Windows</H3></A>
+ <OL>
+ <LI>Unzip the supplied source zip file</LI>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to built Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>RUBY_HOME=&lt;path to installed Ruby&gt;
+ </UL></LI>
+ <LI>You must have set up the environment for Microsoft Visual C++ tools. The build command
+ will call vcvars32 to set the environment. Ensure the directory containing this is on your path.
+ This will be where you installed the compiler.</LI>
+ <LI>Build the source:
+ <UL>
+ <LI>cd &lt;to where you unzipped the source&gt;</LI>
+ <LI>build</LI>
+ </UL>
+ This will build all the projects and put the required output into the 'deploy' directory<BR/><BR/>
+ Alternatively, open the workspace at &lt;tuscany_sca_install_dir&gt;/projects/tuscany_sca/tuscany_sca.dsw
+ in Visual Studio 6 or at at &lt;tuscany_sca_install_dir&gt;/projectsvc7/tuscany_sca/tuscany_sca.sln
+ in Visual Studio 7.1 - you can build projects individually
+ or build the samples to rebuild all the projects</LI>
+ <LI>Set the TUSCANY_SCACPP environment variable to point to the 'deploy' directory that was just created</LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="pm"><H2>The Tuscany Ruby Programming Model</H2></A>
+ <P>This section will explain the Tuscany Ruby programming model to help you to
+ write your own Ruby components and clients.
+ </P>
+ <P>The Tuscany Ruby component and client support comes from a Ruby extension
+ library that is built in the &lt;tuscany_sca_install_dir&gt;/extensions/ruby/bin
+ directory on Windows and &lt;tuscany_sca_install_dir&gt;/extensions/ruby/lib on
+ Linux.
+ </P>
+ <A NAME="clients"><H3>Clients</H3></A>
+ <P>Using the Ruby SCA extension library, a Ruby client can search for an SCA service with:
+ </P>
+<PRE>require("libtuscany_sca_ruby")
+
+calculator = SCA::locateService("CalculatorComponent/CalculatorService")
+</PRE>
+ <P>This finds the component and service as defined in the composite and componentType
+ side files and returns a proxy object that can call the SCA service. You can then
+ simply call a business method on "calculator", like this:
+ </P>
+<PRE>result = calculator.add(12.3, 45.6)</PRE>
+ </P>
+ <A NAME="components"><H3>Components</H3></A>
+ <P>Ruby component implementations are standard Ruby scripts, where class-level
+ functions or module-level functions can be invoked by the Tuscany runtime. To
+ use a Ruby component implementation, use the implementation.ruby element in
+ your .composite file. For example:
+ </P>
+<PRE>&lt;implementation.ruby script="CalculatorImpl.rb"/&gt;
+</PRE>
+ <P>To instantiate a class instance and use a class-level function, the Ruby class must
+ have a default constructor (an initialize() method that takes no arguments) and the
+ class attribute must be definde in the implementation.ruby element
+ in your composite, like so:
+ </P>
+<PRE>&lt;implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/&gt;
+</PRE>
+ <P>Tuscany currently supports passing simple types (strings, ints, floats, etc) as well
+ as Service Data Objects into and out of Ruby components. Service Data Objects are represented
+ in Ruby as REXML Document objects (see the <A HREF="../samples/RubyBank/README.html">RubyBank
+ sample</A> for a demonstration).
+ </P>
+ <P>You can write a componentType file for your Ruby component, but you don't have to - the Ruby
+ extension introspects Ruby component implementation classes for you and binds public
+ attributes to references and properties.
+ </P>
+ <A NAME="references"><H3>References</H3></A>
+ <P>References can be invoked from Ruby component implementations by the use of public
+ attributes in the component implementation classes, like this:
+ </P>
+<PRE>class CalculatorImpl
+
+ # Define the public attribute that corresponds to the divideService reference
+ attr_writer :divideService
+
+...
+
+ def div(arg1, arg2)
+ print "Ruby - CalculatorImpl.div\n"
+ # Invoke the divideService reference
+ @divideService.divide(arg1.to_f, arg2.to_f)
+ end
+
+...
+end
+</PRE>
+ <P>and in your composite file:
+ </P>
+<PRE>&lt;component name="CalculatorComponent"&gt;
+ &lt;implementation.ruby script="CalculatorImpl.rb"/&gt;
+ &lt;reference name="divideService"&gt;DivideComponent/DivideService&lt;/reference&gt;
+&lt;/component&gt;
+</PRE>
+ <A NAME="properties"><H3>Properties</H3></A>
+ <P>A composite with a property defined for a component like so:
+ </P>
+<PRE>&lt;component name="DivideComponent"&gt;
+ &lt;implementation.ruby script="DivideImpl.rb" class="DivideImpl"/&gt;
+ &lt;property name="round"&gt;true&lt;/property&gt;
+&lt;/component&gt;
+</PRE>
+ <P>allows a public attribute of a Ruby component implementation class to be
+ assigned the property value, so it can be used like so:
+ </P>
+<PRE>class DivideImpl
+
+ # Define the public attribute that corresponds to the round property
+ attr_writer :round
+
+...
+
+ def divide(arg1, arg2)
+ print "Ruby - DivideImpl.divide ", arg1, " / ", arg2, "\n"
+ res = arg1.to_f / arg2.to_f
+ # Use the round property
+ if @round then
+ res = res.round
+ print "DivideImpl.divide rounding\n"
+ end
+ print "DivideImpl.divide ", res, "\n"
+ res
+ end
+end
+</PRE>
+</P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-base.css b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-base.css
new file mode 100644
index 0000000000..f2c4be6f4e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-base.css
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev:$ $Date:$ */
+
+body {
+ margin: 0px;
+ padding: 0px;
+}
+img {
+ border:none;
+}
+table {
+ padding:0px;
+ width: 100%;
+ margin-left: -2px;
+ margin-right: -2px;
+}
+acronym {
+ cursor: help;
+ border-bottom: 1px dotted #feb;
+}
+table.bodyTable th, table.bodyTable td {
+ padding: 2px 4px 2px 4px;
+ vertical-align: top;
+}
+div.clear{
+ clear:both;
+ visibility: hidden;
+}
+div.clear hr{
+ display: none;
+}
+#bannerLeft, #bannerRight {
+ font-size: xx-large;
+ font-weight: bold;
+}
+#bannerLeft img, #bannerRight img {
+ margin: 0px;
+}
+.xleft, #bannerLeft img {
+ float:left;
+ text-shadow: #7CFC00;
+}
+.xright, #bannerRight img {
+ float:right;
+ text-shadow: #7CFC00;
+}
+#banner {
+ padding: 0px;
+}
+#banner img {
+ border: none;
+}
+#breadcrumbs {
+ padding: 3px 10px 3px 10px;
+}
+#leftColumn {
+ width: 150px;
+ float:left;
+}
+#bodyColumn {
+ margin-right: 1.5em;
+ margin-left: 177px;
+}
+#legend {
+ padding: 8px 0 8px 0;
+}
+#navcolumn {
+ padding: 8px 4px 0 8px;
+}
+#navcolumn h5 {
+ margin: 0;
+ padding: 0;
+ font-size: small;
+}
+#navcolumn ul {
+ margin: 0;
+ padding: 0;
+ font-size: small;
+}
+#navcolumn li {
+ list-style-type: none;
+ background-image: none;
+ background-repeat: no-repeat;
+ background-position: 0 0.4em;
+ padding-left: 16px;
+ list-style-position: ouside;
+ line-height: 1.2em;
+ font-size: smaller;
+}
+#navcolumn li.expanded {
+ background-image: url(../images/expanded.gif);
+}
+#navcolumn li.collapsed {
+ background-image: url(../images/collapsed.gif);
+}
+#poweredBy {
+ text-align: center;
+}
+#navcolumn img {
+ margin-top: 10px;
+ margin-bottom: 3px;
+}
+#poweredBy img {
+ display:block;
+ margin: 20px 0 20px 17px;
+ border: 1px solid black;
+ width: 90px;
+ height: 30px;
+}
+#search img {
+ margin: 0px;
+ display: block;
+}
+#search #q, #search #btnG {
+ border: 1px solid #999;
+ margin-bottom:10px;
+}
+#search form {
+ margin: 0px;
+}
+#lastPublished {
+ font-size: x-small;
+}
+.navSection {
+ margin-bottom: 2px;
+ padding: 8px;
+}
+.navSectionHead {
+ font-weight: bold;
+ font-size: x-small;
+}
+.section {
+ padding: 4px;
+}
+#footer {
+ padding: 3px 10px 3px 10px;
+ font-size: x-small;
+}
+#breadcrumbs {
+ font-size: x-small;
+ margin: 0pt;
+}
+.source {
+ padding: 12px;
+ margin: 1em 7px 1em 7px;
+}
+.source pre {
+ margin: 0px;
+ padding: 0px;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-theme.css b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-theme.css
new file mode 100644
index 0000000000..f0c0a9ac48
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/doc/css/maven-theme.css
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev:$ $Date:$ */
+
+body {
+ padding: 0px 0px 10px 0px;
+}
+body, td, select, input, li{
+ font-family: Verdana, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ padding: 4px 4px 4px 4px;
+ line-height: 1.5em;
+}
+code{
+ font-family: Courier, monospace;
+ font-size: 13px;
+}
+a {
+ text-decoration: none;
+}
+a:link {
+ color:#36a;
+}
+a:visited {
+ color:#47a;
+}
+a:active, a:hover {
+ color:#69c;
+}
+#legend li.externalLink {
+ background: url(../images/external.png) left top no-repeat;
+ padding-left: 18px;
+}
+a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover {
+ background: url(../images/external.png) right center no-repeat;
+ padding-right: 18px;
+}
+#legend li.newWindow {
+ background: url(../images/newwindow.png) left top no-repeat;
+ padding-left: 18px;
+}
+a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover {
+ background: url(../images/newwindow.png) right center no-repeat;
+ padding-right: 18px;
+}
+h2 {
+ padding: 4px 4px 4px 6px;
+ border: 1px solid #999;
+ color: #900;
+ background-color: #ddd;
+ font-weight:900;
+ font-size: x-large;
+}
+h3 {
+ padding: 4px 4px 4px 6px;
+ border: 1px solid #aaa;
+ color: #900;
+ background-color: #eee;
+ font-weight: normal;
+ font-size: large;
+}
+h4 {
+ padding: 4px 4px 4px 6px;
+ border: 1px solid #bbb;
+ color: #900;
+ background-color: #fff;
+ font-weight: normal;
+ font-size: large;
+}
+h5 {
+ padding: 4px 4px 4px 6px;
+ color: #900;
+ font-size: normal;
+}
+p {
+ line-height: 1.5em;
+ font-size: small;
+}
+#breadcrumbs {
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ background-color: #ccc;
+}
+#leftColumn {
+ margin: 10px 0 0 5px;
+ border: 1px solid #999;
+ background-color: #eee;
+}
+#navcolumn h5 {
+ font-size: smaller;
+ border-bottom: 1px solid #aaaaaa;
+ padding-top: 2px;
+ color: #000;
+}
+
+table.bodyTable th {
+ color: white;
+ background-color: #bbb;
+ text-align: left;
+ font-weight: bold;
+}
+
+table.bodyTable th, table.bodyTable td {
+ font-size: 1em;
+}
+
+table.bodyTable tr.a {
+ background-color: #ddd;
+}
+
+table.bodyTable tr.b {
+ background-color: #eee;
+}
+
+.source {
+ border: 1px solid #999;
+}
+dl {
+ padding: 4px 4px 4px 6px;
+ border: 1px solid #aaa;
+ background-color: #ffc;
+}
+dt {
+ color: #900;
+}
+#organizationLogo img, #projectLogo img, #projectLogo span{
+ margin: 8px;
+}
+#banner {
+ border-bottom: 1px solid #fff;
+}
+.sourcecode {
+ border: 1px solid #999;
+ font-family: Courier, monospace;
+ font-size: 13px;
+ white-space: pre;
+ padding: 4px 4px 4px 6px;
+ margin: 4px 4px 4px 6px;
+}
+pre {
+ border: 1px solid #999;
+ font-family: Courier, monospace;
+ font-size: 13px;
+ white-space: pre;
+ padding: 4px 4px 4px 6px;
+ margin: 4px 4px 4px 6px;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/makebindist.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/makebindist.sh
new file mode 100755
index 0000000000..8daee57fc8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/makebindist.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+TUSCANY_SCACPP_HOME=`pwd`
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$PYTHON_LIB = x ]; then
+echo "PYTHON_LIB not set. Python extension will not be built"
+elif [ x$PYTHON_INCLUDE = x ]; then
+echo "PYTHON_INCLUDE not set. Python extension will not be built"
+elif [ x$PYTHON_VERSION = x ]; then
+echo "PYTHON_VERSION not set. Python extension will not be built"
+else
+echo "Building PYTHON extension with Python $PYTHON_VERSION installed at $PYTHON_LIB, $PYTHON_INCLUDE"
+ENABLE_PYTHON=--enable-python
+fi
+
+if [ x$RUBY_LIB = x ]; then
+echo "RUBY_LIB not set. Ruby extension will not be built"
+elif [ x$RUBY_INCLUDE = x ]; then
+echo "RUBY_INCLUDE not set. Ruby extension will not be built"
+else
+echo "Building Ruby extension with Ruby installed at $RUBY_LIB, $RUBY_INCLUDE"
+ENABLE_RUBY=--enable-ruby
+fi
+
+cd $TUSCANY_SCACPP_HOME
+./configure --prefix=${TUSCANY_SCACPP_HOME}/deploy --enable-static=no ${ENABLE_RUBY} ${ENABLE_PYTHON}
+make
+make install
+
+cd ${TUSCANY_SCACPP_HOME}/samples
+export TUSCANY_SCACPP=${TUSCANY_SCACPP_HOME}/deploy
+./configure --prefix=${TUSCANY_SCACPP_HOME}/deploy --enable-static=no ${ENABLE_RUBY} ${ENABLE_PYTHON}
+make
+make install
+
+cd ${TUSCANY_SCACPP_HOME}/deploy
+for i in `find . -name "*.la"`
+do
+ rm $i
+done
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/makedist.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/makedist.sh
new file mode 100755
index 0000000000..504ebff6b1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/makedist.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+TUSCANY_SCACPP_HOME=`pwd`
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+cd ${TUSCANY_SCACPP_HOME}/samples
+./autogen.sh
+./configure --prefix=${TUSCANY_SCACPP_HOME}/deploy --enable-static=no
+
+cd $TUSCANY_SCACPP_HOME
+./autogen.sh
+./configure --prefix=${TUSCANY_SCACPP_HOME}/deploy --enable-static=no
+
+make bindist
+
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build Instructions.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build Instructions.txt
new file mode 100644
index 0000000000..44df975db5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build Instructions.txt
@@ -0,0 +1,12 @@
+Tuscany SCA Build Instructions
+==============================
+
+1) Set the environment variable TUSCANY_SDOCPP to the path of an SDO driver
+
+2) Set the environment variable AXIS2C_HOME to the path of Axis2C (Version 0.94)
+
+NOTE: The environment variables must be set BEFORE launching Visual Studio
+
+3) Build->Rebuild All
+
+The output for the build will be in tuscany\cpp\sca\deploy
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.dsp
new file mode 100644
index 0000000000..51bcf1fd0d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.dsp
@@ -0,0 +1,67 @@
+# Microsoft Developer Studio Project File - Name="Build" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Generic Project" 0x010a
+
+CFG=Build - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak" CFG="Build - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+MTL=midl.exe
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "Build - Win32 Release"
+# Name "Build - Win32 Debug"
+# Begin Source File
+
+SOURCE=".\Build Instructions.txt"
+# End Source File
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.mak
new file mode 100644
index 0000000000..80499ebc51
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/Build/Build.mak
@@ -0,0 +1,259 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on Build.dsp
+!IF "$(CFG)" == ""
+CFG=Build - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Build - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Build - Win32 Release" && "$(CFG)" != "Build - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak" CFG="Build - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+OUTDIR=.\Release
+INTDIR=.\Release
+
+!IF "$(RECURSE)" == "0"
+
+ALL :
+
+!ELSE
+
+ALL : "tuscany_sca_ruby - Win32 Release" "tuscany_sca_python - Win32 Release" "tuscany_sca_ws_dispatcher - Win32 Release" "tuscany_sca_ws_service - Win32 Release" "tuscany_sca_ws_reference - Win32 Release" "tuscany_sca_cpp - Win32 Release" "tuscany_sca - Win32 Release"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 ReleaseCLEAN" "tuscany_sca_cpp - Win32 ReleaseCLEAN" "tuscany_sca_ws_reference - Win32 ReleaseCLEAN" "tuscany_sca_ws_service - Win32 ReleaseCLEAN" "tuscany_sca_ws_dispatcher - Win32 ReleaseCLEAN" "tuscany_sca_python - Win32 ReleaseCLEAN" "tuscany_sca_ruby - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+MTL=midl.exe
+MTL_PROJ=
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+MTL=midl.exe
+MTL_PROJ=
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("Build.dep")
+!INCLUDE "Build.dep"
+!ELSE
+!MESSAGE Warning: cannot find "Build.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "Build - Win32 Release" || "$(CFG)" == "Build - Win32 Debug"
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca - Win32 Release" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca - Win32 Debug" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca_cpp - Win32 Release" :
+ cd "..\tuscany_sca_cpp"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_cpp.mak CFG="tuscany_sca_cpp - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca_cpp - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_cpp"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_cpp.mak CFG="tuscany_sca_cpp - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca_cpp - Win32 Debug" :
+ cd "..\tuscany_sca_cpp"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_cpp.mak CFG="tuscany_sca_cpp - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca_cpp - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_cpp"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_cpp.mak CFG="tuscany_sca_cpp - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca_ws_reference - Win32 Release" :
+ cd "..\tuscany_sca_ws_reference"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_reference.mak CFG="tuscany_sca_ws_reference - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca_ws_reference - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_ws_reference"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_reference.mak CFG="tuscany_sca_ws_reference - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca_ws_reference - Win32 Debug" :
+ cd "..\tuscany_sca_ws_reference"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_reference.mak CFG="tuscany_sca_ws_reference - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca_ws_reference - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_ws_reference"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_reference.mak CFG="tuscany_sca_ws_reference - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca_ws_service - Win32 Release" :
+ cd "..\tuscany_sca_ws_service"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_service.mak CFG="tuscany_sca_ws_service - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca_ws_service - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_ws_service"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_service.mak CFG="tuscany_sca_ws_service - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca_ws_service - Win32 Debug" :
+ cd "..\tuscany_sca_ws_service"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_service.mak CFG="tuscany_sca_ws_service - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca_ws_service - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_ws_service"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_service.mak CFG="tuscany_sca_ws_service - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca_ws_dispatcher - Win32 Release" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca_ws_dispatcher - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca_ws_dispatcher - Win32 Debug" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca_ws_dispatcher - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca_python - Win32 Release" :
+ cd "..\tuscany_sca_python"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_python.mak CFG="tuscany_sca_python - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca_python - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_python"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_python.mak CFG="tuscany_sca_python - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca_python - Win32 Debug" :
+ cd "..\tuscany_sca_python"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_python.mak CFG="tuscany_sca_python - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca_python - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_python"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_python.mak CFG="tuscany_sca_python - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"tuscany_sca_ruby - Win32 Release" :
+ cd "..\tuscany_sca_ruby"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ruby.mak CFG="tuscany_sca_ruby - Win32 Release"
+ cd "..\Build"
+
+"tuscany_sca_ruby - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_ruby"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ruby.mak CFG="tuscany_sca_ruby - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"tuscany_sca_ruby - Win32 Debug" :
+ cd "..\tuscany_sca_ruby"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ruby.mak CFG="tuscany_sca_ruby - Win32 Debug"
+ cd "..\Build"
+
+"tuscany_sca_ruby - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_ruby"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ruby.mak CFG="tuscany_sca_ruby - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/build.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/build.cmd
new file mode 100644
index 0000000000..561a03aea7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/build.cmd
@@ -0,0 +1,23 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+cd Build
+nmake -f Build.mak CFG="Build - Win32 Release"
+cd ..
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.dsw b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.dsw
new file mode 100644
index 0000000000..2d7d7f29ff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.dsw
@@ -0,0 +1,152 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Build"=.\Build\Build.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_cpp
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_ws_reference
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_ws_service
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_ws_dispatcher
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_python
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_ruby
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca"=.\tuscany_sca\tuscany_sca.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca_cpp"=.\tuscany_sca_cpp\tuscany_sca_cpp.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca_python"=.\tuscany_sca_python\tuscany_sca_python.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca_ruby"=.\tuscany_sca_ruby\tuscany_sca_ruby.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca_ws_dispatcher"=.\tuscany_sca_ws_dispatcher\tuscany_sca_ws_dispatcher.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca_ws_reference"=.\tuscany_sca_ws_reference\tuscany_sca_ws_reference.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tuscany_sca_ws_service"=.\tuscany_sca_ws_service\tuscany_sca_ws_service.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name tuscany_sca_ws_dispatcher
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.ncb b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.ncb
new file mode 100644
index 0000000000..37c7336f39
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.ncb
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.opt b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.opt
new file mode 100644
index 0000000000..d89ab2f57c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca.opt
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.dsp
new file mode 100644
index 0000000000..78a7ebf40e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.dsp
@@ -0,0 +1,449 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca.mak" CFG="tuscany_sca - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SCA_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 axis2_engine.lib tuscany_sdo_axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /dll /machine:I386 /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\core\deploy.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SCA_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /X
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 axis2_engine.lib tuscany_sdo_axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\core\deploy.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca - Win32 Release"
+# Name "tuscany_sca - Win32 Debug"
+# Begin Group "tuscany/sca"
+
+# PROP Default_Filter ""
+# Begin Group "core"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\Operation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\Operation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\SCARuntime.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\SCARuntime.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\ServiceProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\ServiceProxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\ServiceWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\ServiceWrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\TuscanyRuntime.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\TuscanyRuntime.h
+# End Source File
+# End Group
+# Begin Group "model"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Binding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Binding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Component.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Component.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ComponentType.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ComponentType.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Composite.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Composite.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\CompositeReference.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\CompositeReference.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\CompositeService.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\CompositeService.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Contract.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Contract.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Interface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Interface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ModelLoader.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ModelLoader.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Reference.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Reference.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ReferenceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ReferenceBinding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ReferenceType.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ReferenceType.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Service.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Service.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ServiceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ServiceBinding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ServiceType.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ServiceType.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Wire.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Wire.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLDefinition.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLDefinition.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLInterface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLInterface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLOperation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WsdlOperation.h
+# End Source File
+# End Group
+# Begin Group "util"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\DefaultLogWriter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\DefaultLogWriter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Exceptions.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Exceptions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\File.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\File.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\FileLogWriter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\FileLogWriter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Library.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Library.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Logger.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Logger.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Logging.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\LogWriter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\LogWriter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Utils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Utils.h
+# End Source File
+# End Group
+# Begin Group "extension"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ImplementationExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ImplementationExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\InterfaceExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\InterfaceExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ReferenceBindingExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ReferenceBindingExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ServiceBindingExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ServiceBindingExtension.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\export.h
+# End Source File
+# End Group
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\xsd\sca-core.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\xsd\sca-implementation-composite.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\xsd\sca-implementation-java.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\xsd\sca-interface-java.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\xsd\sca-interface-wsdl.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\xsd\sca.xsd
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\xsd\tuscany.xsd
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.mak
new file mode 100644
index 0000000000..c68fa3519a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.mak
@@ -0,0 +1,570 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca - Win32 Release" && "$(CFG)" != "tuscany_sca - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca.mak" CFG="tuscany_sca - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\tuscany_sca.dll"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\Binding.obj"
+ -@erase "$(INTDIR)\Component.obj"
+ -@erase "$(INTDIR)\ComponentType.obj"
+ -@erase "$(INTDIR)\Composite.obj"
+ -@erase "$(INTDIR)\CompositeReference.obj"
+ -@erase "$(INTDIR)\CompositeService.obj"
+ -@erase "$(INTDIR)\Contract.obj"
+ -@erase "$(INTDIR)\DefaultLogWriter.obj"
+ -@erase "$(INTDIR)\Exceptions.obj"
+ -@erase "$(INTDIR)\File.obj"
+ -@erase "$(INTDIR)\FileLogWriter.obj"
+ -@erase "$(INTDIR)\ImplementationExtension.obj"
+ -@erase "$(INTDIR)\Interface.obj"
+ -@erase "$(INTDIR)\InterfaceExtension.obj"
+ -@erase "$(INTDIR)\Library.obj"
+ -@erase "$(INTDIR)\Logger.obj"
+ -@erase "$(INTDIR)\LogWriter.obj"
+ -@erase "$(INTDIR)\ModelLoader.obj"
+ -@erase "$(INTDIR)\Operation.obj"
+ -@erase "$(INTDIR)\Reference.obj"
+ -@erase "$(INTDIR)\ReferenceBinding.obj"
+ -@erase "$(INTDIR)\ReferenceBindingExtension.obj"
+ -@erase "$(INTDIR)\ReferenceType.obj"
+ -@erase "$(INTDIR)\SCARuntime.obj"
+ -@erase "$(INTDIR)\Service.obj"
+ -@erase "$(INTDIR)\ServiceBinding.obj"
+ -@erase "$(INTDIR)\ServiceBindingExtension.obj"
+ -@erase "$(INTDIR)\ServiceProxy.obj"
+ -@erase "$(INTDIR)\ServiceType.obj"
+ -@erase "$(INTDIR)\ServiceWrapper.obj"
+ -@erase "$(INTDIR)\TuscanyRuntime.obj"
+ -@erase "$(INTDIR)\Utils.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\Wire.obj"
+ -@erase "$(INTDIR)\WSDLDefinition.obj"
+ -@erase "$(INTDIR)\WSDLInterface.obj"
+ -@erase "$(INTDIR)\WSDLOperation.obj"
+ -@erase "$(OUTDIR)\tuscany_sca.dll"
+ -@erase "$(OUTDIR)\tuscany_sca.exp"
+ -@erase "$(OUTDIR)\tuscany_sca.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SCA_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_engine.lib tuscany_sdo_axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca.dll" /implib:"$(OUTDIR)\tuscany_sca.lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\Operation.obj" \
+ "$(INTDIR)\SCARuntime.obj" \
+ "$(INTDIR)\ServiceProxy.obj" \
+ "$(INTDIR)\ServiceWrapper.obj" \
+ "$(INTDIR)\TuscanyRuntime.obj" \
+ "$(INTDIR)\Binding.obj" \
+ "$(INTDIR)\Component.obj" \
+ "$(INTDIR)\ComponentType.obj" \
+ "$(INTDIR)\Composite.obj" \
+ "$(INTDIR)\CompositeReference.obj" \
+ "$(INTDIR)\CompositeService.obj" \
+ "$(INTDIR)\Contract.obj" \
+ "$(INTDIR)\Interface.obj" \
+ "$(INTDIR)\ModelLoader.obj" \
+ "$(INTDIR)\Reference.obj" \
+ "$(INTDIR)\ReferenceBinding.obj" \
+ "$(INTDIR)\ReferenceType.obj" \
+ "$(INTDIR)\Service.obj" \
+ "$(INTDIR)\ServiceBinding.obj" \
+ "$(INTDIR)\ServiceType.obj" \
+ "$(INTDIR)\Wire.obj" \
+ "$(INTDIR)\WSDLDefinition.obj" \
+ "$(INTDIR)\WSDLInterface.obj" \
+ "$(INTDIR)\WSDLOperation.obj" \
+ "$(INTDIR)\DefaultLogWriter.obj" \
+ "$(INTDIR)\Exceptions.obj" \
+ "$(INTDIR)\File.obj" \
+ "$(INTDIR)\FileLogWriter.obj" \
+ "$(INTDIR)\Library.obj" \
+ "$(INTDIR)\Logger.obj" \
+ "$(INTDIR)\LogWriter.obj" \
+ "$(INTDIR)\Utils.obj" \
+ "$(INTDIR)\ImplementationExtension.obj" \
+ "$(INTDIR)\InterfaceExtension.obj" \
+ "$(INTDIR)\ReferenceBindingExtension.obj" \
+ "$(INTDIR)\ServiceBindingExtension.obj"
+
+"$(OUTDIR)\tuscany_sca.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\tuscany_sca.dll"
+ ..\..\..\runtime\core\deploy.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\tuscany_sca.dll"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\Binding.obj"
+ -@erase "$(INTDIR)\Component.obj"
+ -@erase "$(INTDIR)\ComponentType.obj"
+ -@erase "$(INTDIR)\Composite.obj"
+ -@erase "$(INTDIR)\CompositeReference.obj"
+ -@erase "$(INTDIR)\CompositeService.obj"
+ -@erase "$(INTDIR)\Contract.obj"
+ -@erase "$(INTDIR)\DefaultLogWriter.obj"
+ -@erase "$(INTDIR)\Exceptions.obj"
+ -@erase "$(INTDIR)\File.obj"
+ -@erase "$(INTDIR)\FileLogWriter.obj"
+ -@erase "$(INTDIR)\ImplementationExtension.obj"
+ -@erase "$(INTDIR)\Interface.obj"
+ -@erase "$(INTDIR)\InterfaceExtension.obj"
+ -@erase "$(INTDIR)\Library.obj"
+ -@erase "$(INTDIR)\Logger.obj"
+ -@erase "$(INTDIR)\LogWriter.obj"
+ -@erase "$(INTDIR)\ModelLoader.obj"
+ -@erase "$(INTDIR)\Operation.obj"
+ -@erase "$(INTDIR)\Reference.obj"
+ -@erase "$(INTDIR)\ReferenceBinding.obj"
+ -@erase "$(INTDIR)\ReferenceBindingExtension.obj"
+ -@erase "$(INTDIR)\ReferenceType.obj"
+ -@erase "$(INTDIR)\SCARuntime.obj"
+ -@erase "$(INTDIR)\Service.obj"
+ -@erase "$(INTDIR)\ServiceBinding.obj"
+ -@erase "$(INTDIR)\ServiceBindingExtension.obj"
+ -@erase "$(INTDIR)\ServiceProxy.obj"
+ -@erase "$(INTDIR)\ServiceType.obj"
+ -@erase "$(INTDIR)\ServiceWrapper.obj"
+ -@erase "$(INTDIR)\TuscanyRuntime.obj"
+ -@erase "$(INTDIR)\Utils.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(INTDIR)\Wire.obj"
+ -@erase "$(INTDIR)\WSDLDefinition.obj"
+ -@erase "$(INTDIR)\WSDLInterface.obj"
+ -@erase "$(INTDIR)\WSDLOperation.obj"
+ -@erase "$(OUTDIR)\tuscany_sca.dll"
+ -@erase "$(OUTDIR)\tuscany_sca.exp"
+ -@erase "$(OUTDIR)\tuscany_sca.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca.lib"
+ -@erase "$(OUTDIR)\tuscany_sca.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SCA_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_engine.lib tuscany_sdo_axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca.dll" /implib:"$(OUTDIR)\tuscany_sca.lib" /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\Operation.obj" \
+ "$(INTDIR)\SCARuntime.obj" \
+ "$(INTDIR)\ServiceProxy.obj" \
+ "$(INTDIR)\ServiceWrapper.obj" \
+ "$(INTDIR)\TuscanyRuntime.obj" \
+ "$(INTDIR)\Binding.obj" \
+ "$(INTDIR)\Component.obj" \
+ "$(INTDIR)\ComponentType.obj" \
+ "$(INTDIR)\Composite.obj" \
+ "$(INTDIR)\CompositeReference.obj" \
+ "$(INTDIR)\CompositeService.obj" \
+ "$(INTDIR)\Contract.obj" \
+ "$(INTDIR)\Interface.obj" \
+ "$(INTDIR)\ModelLoader.obj" \
+ "$(INTDIR)\Reference.obj" \
+ "$(INTDIR)\ReferenceBinding.obj" \
+ "$(INTDIR)\ReferenceType.obj" \
+ "$(INTDIR)\Service.obj" \
+ "$(INTDIR)\ServiceBinding.obj" \
+ "$(INTDIR)\ServiceType.obj" \
+ "$(INTDIR)\Wire.obj" \
+ "$(INTDIR)\WSDLDefinition.obj" \
+ "$(INTDIR)\WSDLInterface.obj" \
+ "$(INTDIR)\WSDLOperation.obj" \
+ "$(INTDIR)\DefaultLogWriter.obj" \
+ "$(INTDIR)\Exceptions.obj" \
+ "$(INTDIR)\File.obj" \
+ "$(INTDIR)\FileLogWriter.obj" \
+ "$(INTDIR)\Library.obj" \
+ "$(INTDIR)\Logger.obj" \
+ "$(INTDIR)\LogWriter.obj" \
+ "$(INTDIR)\Utils.obj" \
+ "$(INTDIR)\ImplementationExtension.obj" \
+ "$(INTDIR)\InterfaceExtension.obj" \
+ "$(INTDIR)\ReferenceBindingExtension.obj" \
+ "$(INTDIR)\ServiceBindingExtension.obj"
+
+"$(OUTDIR)\tuscany_sca.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\tuscany_sca.dll"
+ ..\..\..\runtime\core\deploy.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca.dep")
+!INCLUDE "tuscany_sca.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca - Win32 Release" || "$(CFG)" == "tuscany_sca - Win32 Debug"
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\Operation.cpp
+
+"$(INTDIR)\Operation.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\SCARuntime.cpp
+
+"$(INTDIR)\SCARuntime.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\ServiceProxy.cpp
+
+"$(INTDIR)\ServiceProxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\ServiceWrapper.cpp
+
+"$(INTDIR)\ServiceWrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\core\TuscanyRuntime.cpp
+
+"$(INTDIR)\TuscanyRuntime.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Binding.cpp
+
+"$(INTDIR)\Binding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Component.cpp
+
+"$(INTDIR)\Component.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ComponentType.cpp
+
+"$(INTDIR)\ComponentType.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Composite.cpp
+
+"$(INTDIR)\Composite.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\CompositeReference.cpp
+
+"$(INTDIR)\CompositeReference.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\CompositeService.cpp
+
+"$(INTDIR)\CompositeService.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Contract.cpp
+
+"$(INTDIR)\Contract.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Interface.cpp
+
+"$(INTDIR)\Interface.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ModelLoader.cpp
+
+"$(INTDIR)\ModelLoader.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Reference.cpp
+
+"$(INTDIR)\Reference.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ReferenceBinding.cpp
+
+"$(INTDIR)\ReferenceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ReferenceType.cpp
+
+"$(INTDIR)\ReferenceType.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Service.cpp
+
+"$(INTDIR)\Service.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ServiceBinding.cpp
+
+"$(INTDIR)\ServiceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\ServiceType.cpp
+
+"$(INTDIR)\ServiceType.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\Wire.cpp
+
+"$(INTDIR)\Wire.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLDefinition.cpp
+
+"$(INTDIR)\WSDLDefinition.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLInterface.cpp
+
+"$(INTDIR)\WSDLInterface.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\model\WSDLOperation.cpp
+
+"$(INTDIR)\WSDLOperation.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\DefaultLogWriter.cpp
+
+"$(INTDIR)\DefaultLogWriter.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Exceptions.cpp
+
+"$(INTDIR)\Exceptions.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\File.cpp
+
+"$(INTDIR)\File.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\FileLogWriter.cpp
+
+"$(INTDIR)\FileLogWriter.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Library.cpp
+
+"$(INTDIR)\Library.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Logger.cpp
+
+"$(INTDIR)\Logger.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\LogWriter.cpp
+
+"$(INTDIR)\LogWriter.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\util\Utils.cpp
+
+"$(INTDIR)\Utils.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ImplementationExtension.cpp
+
+"$(INTDIR)\ImplementationExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\InterfaceExtension.cpp
+
+"$(INTDIR)\InterfaceExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ReferenceBindingExtension.cpp
+
+"$(INTDIR)\ReferenceBindingExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\core\src\tuscany\sca\extension\ServiceBindingExtension.cpp
+
+"$(INTDIR)\ServiceBindingExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.dsp
new file mode 100644
index 0000000000..a371552c8d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.dsp
@@ -0,0 +1,241 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca_cpp" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca_cpp - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_cpp.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_cpp.mak" CFG="tuscany_sca_cpp - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_cpp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_cpp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca_cpp - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_CPP_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/cpp/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_CPP_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 tuscany_sca.lib tuscany_sdo.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\cpp\deploy.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca_cpp - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_CPP_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/cpp/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_CPP_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 tuscany_sca.lib tuscany_sdo.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\cpp\deploy.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca_cpp - Win32 Release"
+# Name "tuscany_sca_cpp - Win32 Debug"
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\cpp\xsd\sca-implementation-cpp.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\cpp\xsd\sca-interface-cpp.xsd"
+# End Source File
+# End Group
+# Begin Group "osoa/sca"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\ComponentContext.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\ComponentContext.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\CompositeContext.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\CompositeContext.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\export.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\sca.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\ServiceRuntimeException.h
+# End Source File
+# End Group
+# Begin Group "tuscany/sca/cpp"
+
+# PROP Default_Filter ""
+# Begin Group "model"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPImplementation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPImplementation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPInterface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPInterface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPReferenceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPReferenceBinding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPServiceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPServiceBinding.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\ComponentContextImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\ComponentContextImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CompositeContextImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CompositeContextImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPImplementationExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPImplementationExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPInterfaceExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPInterfaceExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceProxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceWrapper.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.mak
new file mode 100644
index 0000000000..b027cea266
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.mak
@@ -0,0 +1,390 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca_cpp.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca_cpp - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca_cpp - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca_cpp - Win32 Release" && "$(CFG)" != "tuscany_sca_cpp - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_cpp.mak" CFG="tuscany_sca_cpp - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_cpp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_cpp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_cpp - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_cpp.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_cpp.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\ComponentContext.obj"
+ -@erase "$(INTDIR)\ComponentContextImpl.obj"
+ -@erase "$(INTDIR)\CompositeContext.obj"
+ -@erase "$(INTDIR)\CompositeContextImpl.obj"
+ -@erase "$(INTDIR)\CPPExtension.obj"
+ -@erase "$(INTDIR)\CPPImplementation.obj"
+ -@erase "$(INTDIR)\CPPImplementationExtension.obj"
+ -@erase "$(INTDIR)\CPPInterface.obj"
+ -@erase "$(INTDIR)\CPPInterfaceExtension.obj"
+ -@erase "$(INTDIR)\CPPReferenceBinding.obj"
+ -@erase "$(INTDIR)\CPPServiceBinding.obj"
+ -@erase "$(INTDIR)\CPPServiceProxy.obj"
+ -@erase "$(INTDIR)\CPPServiceWrapper.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/cpp/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_CPP_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_cpp.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=tuscany_sca.lib tuscany_sdo.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca_cpp.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca_cpp.dll" /implib:"$(OUTDIR)\tuscany_sca_cpp.lib" /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\ComponentContext.obj" \
+ "$(INTDIR)\CompositeContext.obj" \
+ "$(INTDIR)\CPPImplementation.obj" \
+ "$(INTDIR)\CPPInterface.obj" \
+ "$(INTDIR)\CPPReferenceBinding.obj" \
+ "$(INTDIR)\CPPServiceBinding.obj" \
+ "$(INTDIR)\ComponentContextImpl.obj" \
+ "$(INTDIR)\CompositeContextImpl.obj" \
+ "$(INTDIR)\CPPExtension.obj" \
+ "$(INTDIR)\CPPImplementationExtension.obj" \
+ "$(INTDIR)\CPPInterfaceExtension.obj" \
+ "$(INTDIR)\CPPServiceProxy.obj" \
+ "$(INTDIR)\CPPServiceWrapper.obj" \
+ "..\tuscany_sca\Release\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_cpp.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_cpp.dll"
+ ..\..\..\runtime\extensions\cpp\deploy.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_cpp - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_cpp.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_cpp.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\ComponentContext.obj"
+ -@erase "$(INTDIR)\ComponentContextImpl.obj"
+ -@erase "$(INTDIR)\CompositeContext.obj"
+ -@erase "$(INTDIR)\CompositeContextImpl.obj"
+ -@erase "$(INTDIR)\CPPExtension.obj"
+ -@erase "$(INTDIR)\CPPImplementation.obj"
+ -@erase "$(INTDIR)\CPPImplementationExtension.obj"
+ -@erase "$(INTDIR)\CPPInterface.obj"
+ -@erase "$(INTDIR)\CPPInterfaceExtension.obj"
+ -@erase "$(INTDIR)\CPPReferenceBinding.obj"
+ -@erase "$(INTDIR)\CPPServiceBinding.obj"
+ -@erase "$(INTDIR)\CPPServiceProxy.obj"
+ -@erase "$(INTDIR)\CPPServiceWrapper.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.lib"
+ -@erase "$(OUTDIR)\tuscany_sca_cpp.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/cpp/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_CPP_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_cpp.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=tuscany_sca.lib tuscany_sdo.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca_cpp.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca_cpp.dll" /implib:"$(OUTDIR)\tuscany_sca_cpp.lib" /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\ComponentContext.obj" \
+ "$(INTDIR)\CompositeContext.obj" \
+ "$(INTDIR)\CPPImplementation.obj" \
+ "$(INTDIR)\CPPInterface.obj" \
+ "$(INTDIR)\CPPReferenceBinding.obj" \
+ "$(INTDIR)\CPPServiceBinding.obj" \
+ "$(INTDIR)\ComponentContextImpl.obj" \
+ "$(INTDIR)\CompositeContextImpl.obj" \
+ "$(INTDIR)\CPPExtension.obj" \
+ "$(INTDIR)\CPPImplementationExtension.obj" \
+ "$(INTDIR)\CPPInterfaceExtension.obj" \
+ "$(INTDIR)\CPPServiceProxy.obj" \
+ "$(INTDIR)\CPPServiceWrapper.obj" \
+ "..\tuscany_sca\Debug\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_cpp.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_cpp.dll"
+ ..\..\..\runtime\extensions\cpp\deploy.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca_cpp.dep")
+!INCLUDE "tuscany_sca_cpp.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca_cpp.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca_cpp - Win32 Release" || "$(CFG)" == "tuscany_sca_cpp - Win32 Debug"
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\ComponentContext.cpp
+
+"$(INTDIR)\ComponentContext.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\osoa\sca\CompositeContext.cpp
+
+"$(INTDIR)\CompositeContext.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPImplementation.cpp
+
+"$(INTDIR)\CPPImplementation.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPInterface.cpp
+
+"$(INTDIR)\CPPInterface.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPReferenceBinding.cpp
+
+"$(INTDIR)\CPPReferenceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPServiceBinding.cpp
+
+"$(INTDIR)\CPPServiceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\ComponentContextImpl.cpp
+
+"$(INTDIR)\ComponentContextImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CompositeContextImpl.cpp
+
+"$(INTDIR)\CompositeContextImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPExtension.cpp
+
+"$(INTDIR)\CPPExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPImplementationExtension.cpp
+
+"$(INTDIR)\CPPImplementationExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPInterfaceExtension.cpp
+
+"$(INTDIR)\CPPInterfaceExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceProxy.cpp
+
+"$(INTDIR)\CPPServiceProxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceWrapper.cpp
+
+"$(INTDIR)\CPPServiceWrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "tuscany_sca_cpp - Win32 Release"
+
+"tuscany_sca - Win32 Release" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release"
+ cd "..\tuscany_sca_cpp"
+
+"tuscany_sca - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_cpp"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_cpp - Win32 Debug"
+
+"tuscany_sca - Win32 Debug" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug"
+ cd "..\tuscany_sca_cpp"
+
+"tuscany_sca - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_cpp"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.dsp
new file mode 100644
index 0000000000..b7d6cba094
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.dsp
@@ -0,0 +1,205 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca_python" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca_python - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_python.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_python.mak" CFG="tuscany_sca_python - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_python - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_python - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca_python - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_PYTHON_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/python/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(PYTHON_HOME)\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_PYTHON_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /machine:I386 /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(PYTHON_HOME)\libs"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\python\deploy.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca_python - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_PYTHON_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/python/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(PYTHON_HOME)\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_PYTHON_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(PYTHON_HOME)\libs"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\python\deploy.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca_python - Win32 Release"
+# Name "tuscany_sca_python - Win32 Debug"
+# Begin Group "tuscany/sca/python"
+
+# PROP Default_Filter ""
+# Begin Group "model"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonImplementation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonImplementation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonInterface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonInterface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonReferenceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonReferenceBinding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonServiceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonServiceBinding.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\export.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonImplementationExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonImplementationExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonInterfaceExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonInterfaceExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceProxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceRuntimeException.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceWrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\sca_module.cpp
+# End Source File
+# End Group
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\python\xsd\sca-implementation-python.xsd"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\python\xsd\sca-interface-python.xsd"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.mak
new file mode 100644
index 0000000000..0cd48c14f5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.mak
@@ -0,0 +1,360 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca_python.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca_python - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca_python - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca_python - Win32 Release" && "$(CFG)" != "tuscany_sca_python - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_python.mak" CFG="tuscany_sca_python - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_python - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_python - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_python - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_python.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_python.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\PythonExtension.obj"
+ -@erase "$(INTDIR)\PythonImplementation.obj"
+ -@erase "$(INTDIR)\PythonImplementationExtension.obj"
+ -@erase "$(INTDIR)\PythonInterface.obj"
+ -@erase "$(INTDIR)\PythonInterfaceExtension.obj"
+ -@erase "$(INTDIR)\PythonReferenceBinding.obj"
+ -@erase "$(INTDIR)\PythonServiceBinding.obj"
+ -@erase "$(INTDIR)\PythonServiceProxy.obj"
+ -@erase "$(INTDIR)\PythonServiceWrapper.obj"
+ -@erase "$(INTDIR)\sca_module.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\tuscany_sca_python.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_python.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_python.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/python/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(PYTHON_HOME)\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_PYTHON_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_python.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca_python.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca_python.dll" /implib:"$(OUTDIR)\tuscany_sca_python.lib" /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(PYTHON_HOME)\libs"
+LINK32_OBJS= \
+ "$(INTDIR)\PythonImplementation.obj" \
+ "$(INTDIR)\PythonInterface.obj" \
+ "$(INTDIR)\PythonReferenceBinding.obj" \
+ "$(INTDIR)\PythonServiceBinding.obj" \
+ "$(INTDIR)\PythonExtension.obj" \
+ "$(INTDIR)\PythonImplementationExtension.obj" \
+ "$(INTDIR)\PythonInterfaceExtension.obj" \
+ "$(INTDIR)\PythonServiceProxy.obj" \
+ "$(INTDIR)\PythonServiceWrapper.obj" \
+ "$(INTDIR)\sca_module.obj" \
+ "..\tuscany_sca\Release\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_python.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_python.dll"
+ ..\..\..\runtime\extensions\python\deploy.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_python - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_python.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_python.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\PythonExtension.obj"
+ -@erase "$(INTDIR)\PythonImplementation.obj"
+ -@erase "$(INTDIR)\PythonImplementationExtension.obj"
+ -@erase "$(INTDIR)\PythonInterface.obj"
+ -@erase "$(INTDIR)\PythonInterfaceExtension.obj"
+ -@erase "$(INTDIR)\PythonReferenceBinding.obj"
+ -@erase "$(INTDIR)\PythonServiceBinding.obj"
+ -@erase "$(INTDIR)\PythonServiceProxy.obj"
+ -@erase "$(INTDIR)\PythonServiceWrapper.obj"
+ -@erase "$(INTDIR)\sca_module.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tuscany_sca_python.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_python.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_python.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca_python.lib"
+ -@erase "$(OUTDIR)\tuscany_sca_python.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/python/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(PYTHON_HOME)\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_PYTHON_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_python.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca_python.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca_python.dll" /implib:"$(OUTDIR)\tuscany_sca_python.lib" /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(PYTHON_HOME)\libs"
+LINK32_OBJS= \
+ "$(INTDIR)\PythonImplementation.obj" \
+ "$(INTDIR)\PythonInterface.obj" \
+ "$(INTDIR)\PythonReferenceBinding.obj" \
+ "$(INTDIR)\PythonServiceBinding.obj" \
+ "$(INTDIR)\PythonExtension.obj" \
+ "$(INTDIR)\PythonImplementationExtension.obj" \
+ "$(INTDIR)\PythonInterfaceExtension.obj" \
+ "$(INTDIR)\PythonServiceProxy.obj" \
+ "$(INTDIR)\PythonServiceWrapper.obj" \
+ "$(INTDIR)\sca_module.obj" \
+ "..\tuscany_sca\Debug\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_python.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_python.dll"
+ ..\..\..\runtime\extensions\python\deploy.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca_python.dep")
+!INCLUDE "tuscany_sca_python.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca_python.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca_python - Win32 Release" || "$(CFG)" == "tuscany_sca_python - Win32 Debug"
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonImplementation.cpp
+
+"$(INTDIR)\PythonImplementation.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonInterface.cpp
+
+"$(INTDIR)\PythonInterface.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonReferenceBinding.cpp
+
+"$(INTDIR)\PythonReferenceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonServiceBinding.cpp
+
+"$(INTDIR)\PythonServiceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonExtension.cpp
+
+"$(INTDIR)\PythonExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonImplementationExtension.cpp
+
+"$(INTDIR)\PythonImplementationExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonInterfaceExtension.cpp
+
+"$(INTDIR)\PythonInterfaceExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceProxy.cpp
+
+"$(INTDIR)\PythonServiceProxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceWrapper.cpp
+
+"$(INTDIR)\PythonServiceWrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\python\src\tuscany\sca\python\sca_module.cpp
+
+"$(INTDIR)\sca_module.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "tuscany_sca_python - Win32 Release"
+
+"tuscany_sca - Win32 Release" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release"
+ cd "..\tuscany_sca_python"
+
+"tuscany_sca - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_python"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_python - Win32 Debug"
+
+"tuscany_sca - Win32 Debug" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug"
+ cd "..\tuscany_sca_python"
+
+"tuscany_sca - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_python"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.dsp
new file mode 100644
index 0000000000..ccba80b6bf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.dsp
@@ -0,0 +1,185 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca_ruby" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca_ruby - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ruby.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ruby.mak" CFG="tuscany_sca_ruby - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ruby - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ruby - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca_ruby - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_ruby_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ruby/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(RUBY_HOME)\lib\ruby\1.8\i386-mswin32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_RUBY_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib msvcrt-ruby18.lib /nologo /dll /machine:I386 /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(RUBY_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ruby\deploy.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ruby - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_ruby_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ruby/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(RUBY_HOME)\lib\ruby\1.8\i386-mswin32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_RUBY_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib msvcrt-ruby18.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(RUBY_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ruby\deploy.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca_ruby - Win32 Release"
+# Name "tuscany_sca_ruby - Win32 Debug"
+# Begin Group "tuscany/sca/ruby"
+
+# PROP Default_Filter ""
+# Begin Group "model"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyImplementation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\rubyImplementation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyReferenceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\rubyReferenceBinding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyServiceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\rubyServiceBinding.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\export.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\Ruby.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyCompositeContext.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\rubyExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyImplementationExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\rubyImplementationExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\rubyServiceProxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\rubyServiceWrapper.h
+# End Source File
+# End Group
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\ruby\xsd\sca-implementation-ruby.xsd"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.mak
new file mode 100644
index 0000000000..140b842c47
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.mak
@@ -0,0 +1,340 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca_ruby.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca_ruby - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca_ruby - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca_ruby - Win32 Release" && "$(CFG)" != "tuscany_sca_ruby - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ruby.mak" CFG="tuscany_sca_ruby - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ruby - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ruby - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_ruby - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_ruby.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_ruby.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\RubyCompositeContext.obj"
+ -@erase "$(INTDIR)\RubyExtension.obj"
+ -@erase "$(INTDIR)\RubyImplementation.obj"
+ -@erase "$(INTDIR)\RubyImplementationExtension.obj"
+ -@erase "$(INTDIR)\RubyReferenceBinding.obj"
+ -@erase "$(INTDIR)\RubyServiceBinding.obj"
+ -@erase "$(INTDIR)\RubyServiceProxy.obj"
+ -@erase "$(INTDIR)\RubyServiceWrapper.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ruby/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(RUBY_HOME)\lib\ruby\1.8\i386-mswin32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_RUBY_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ruby.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib msvcrt-ruby18.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca_ruby.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ruby.dll" /implib:"$(OUTDIR)\tuscany_sca_ruby.lib" /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(RUBY_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\RubyImplementation.obj" \
+ "$(INTDIR)\RubyReferenceBinding.obj" \
+ "$(INTDIR)\RubyServiceBinding.obj" \
+ "$(INTDIR)\RubyCompositeContext.obj" \
+ "$(INTDIR)\RubyExtension.obj" \
+ "$(INTDIR)\RubyImplementationExtension.obj" \
+ "$(INTDIR)\RubyServiceProxy.obj" \
+ "$(INTDIR)\RubyServiceWrapper.obj" \
+ "..\tuscany_sca\Release\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_ruby.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_ruby.dll"
+ ..\..\..\runtime\extensions\ruby\deploy.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ruby - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_ruby.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_ruby.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\RubyCompositeContext.obj"
+ -@erase "$(INTDIR)\RubyExtension.obj"
+ -@erase "$(INTDIR)\RubyImplementation.obj"
+ -@erase "$(INTDIR)\RubyImplementationExtension.obj"
+ -@erase "$(INTDIR)\RubyReferenceBinding.obj"
+ -@erase "$(INTDIR)\RubyServiceBinding.obj"
+ -@erase "$(INTDIR)\RubyServiceProxy.obj"
+ -@erase "$(INTDIR)\RubyServiceWrapper.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.lib"
+ -@erase "$(OUTDIR)\tuscany_sca_ruby.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ruby/src" /I "../../../deploy/include" /I "$(TUSCANY_SDOCPP)/include" /I "$(RUBY_HOME)\lib\ruby\1.8\i386-mswin32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_RUBY_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ruby.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib msvcrt-ruby18.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca_ruby.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ruby.dll" /implib:"$(OUTDIR)\tuscany_sca_ruby.lib" /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(RUBY_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\RubyImplementation.obj" \
+ "$(INTDIR)\RubyReferenceBinding.obj" \
+ "$(INTDIR)\RubyServiceBinding.obj" \
+ "$(INTDIR)\RubyCompositeContext.obj" \
+ "$(INTDIR)\RubyExtension.obj" \
+ "$(INTDIR)\RubyImplementationExtension.obj" \
+ "$(INTDIR)\RubyServiceProxy.obj" \
+ "$(INTDIR)\RubyServiceWrapper.obj" \
+ "..\tuscany_sca\Debug\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_ruby.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_ruby.dll"
+ ..\..\..\runtime\extensions\ruby\deploy.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca_ruby.dep")
+!INCLUDE "tuscany_sca_ruby.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca_ruby.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca_ruby - Win32 Release" || "$(CFG)" == "tuscany_sca_ruby - Win32 Debug"
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyImplementation.cpp
+
+"$(INTDIR)\RubyImplementation.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyReferenceBinding.cpp
+
+"$(INTDIR)\RubyReferenceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyServiceBinding.cpp
+
+"$(INTDIR)\RubyServiceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyCompositeContext.cpp
+
+"$(INTDIR)\RubyCompositeContext.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyExtension.cpp
+
+"$(INTDIR)\RubyExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyImplementationExtension.cpp
+
+"$(INTDIR)\RubyImplementationExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceProxy.cpp
+
+"$(INTDIR)\RubyServiceProxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceWrapper.cpp
+
+"$(INTDIR)\RubyServiceWrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "tuscany_sca_ruby - Win32 Release"
+
+"tuscany_sca - Win32 Release" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release"
+ cd "..\tuscany_sca_ruby"
+
+"tuscany_sca - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ruby"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ruby - Win32 Debug"
+
+"tuscany_sca - Win32 Debug" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug"
+ cd "..\tuscany_sca_ruby"
+
+"tuscany_sca - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ruby"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.dsp
new file mode 100644
index 0000000000..8c47830df3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.dsp
@@ -0,0 +1,121 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca_ws_dispatcher" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca_ws_dispatcher - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_dispatcher.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_dispatcher.mak" CFG="tuscany_sca_ws_dispatcher - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ws_dispatcher - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ws_dispatcher - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca_ws_dispatcher - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_ws_dispatcher_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_DISPATCHER_EXPORTS" /FD /c
+# SUBTRACT CPP /u /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib /nologo /dll /machine:I386 /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ws\service\deploymodule.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_dispatcher - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_ws_dispatcher_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_DISPATCHER_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /u /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ws\service\deploymodule.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca_ws_dispatcher - Win32 Release"
+# Name "tuscany_sca_ws_dispatcher - Win32 Debug"
+# Begin Group "tuscany/sca/ws"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Dispatcher.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2DispatcherModule.cpp
+# End Source File
+# End Group
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\ws\xsd\sca-binding-webservice.xsd"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.mak
new file mode 100644
index 0000000000..20b6cc0564
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.mak
@@ -0,0 +1,230 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca_ws_dispatcher.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca_ws_dispatcher - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca_ws_dispatcher - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca_ws_dispatcher - Win32 Release" && "$(CFG)" != "tuscany_sca_ws_dispatcher - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_dispatcher.mak" CFG="tuscany_sca_ws_dispatcher - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ws_dispatcher - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ws_dispatcher - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_ws_dispatcher - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\tuscany_sca_ws_dispatcher.dll"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\Axis2Dispatcher.obj"
+ -@erase "$(INTDIR)\Axis2DispatcherModule.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_DISPATCHER_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ws_dispatcher.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca_ws_dispatcher.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ws_dispatcher.dll" /implib:"$(OUTDIR)\tuscany_sca_ws_dispatcher.lib" /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\Axis2Dispatcher.obj" \
+ "$(INTDIR)\Axis2DispatcherModule.obj"
+
+"$(OUTDIR)\tuscany_sca_ws_dispatcher.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\tuscany_sca_ws_dispatcher.dll"
+ ..\..\..\runtime\extensions\ws\service\deploymodule.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_dispatcher - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\tuscany_sca_ws_dispatcher.dll"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\Axis2Dispatcher.obj"
+ -@erase "$(INTDIR)\Axis2DispatcherModule.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.lib"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_dispatcher.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_DISPATCHER_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ws_dispatcher.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca_ws_dispatcher.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ws_dispatcher.dll" /implib:"$(OUTDIR)\tuscany_sca_ws_dispatcher.lib" /pdbtype:sept /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\Axis2Dispatcher.obj" \
+ "$(INTDIR)\Axis2DispatcherModule.obj"
+
+"$(OUTDIR)\tuscany_sca_ws_dispatcher.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\tuscany_sca_ws_dispatcher.dll"
+ ..\..\..\runtime\extensions\ws\service\deploymodule.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca_ws_dispatcher.dep")
+!INCLUDE "tuscany_sca_ws_dispatcher.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca_ws_dispatcher.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca_ws_dispatcher - Win32 Release" || "$(CFG)" == "tuscany_sca_ws_dispatcher - Win32 Debug"
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Dispatcher.cpp
+
+"$(INTDIR)\Axis2Dispatcher.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2DispatcherModule.cpp
+
+"$(INTDIR)\Axis2DispatcherModule.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.dsp
new file mode 100644
index 0000000000..27827f86da
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.dsp
@@ -0,0 +1,149 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca_ws_reference" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca_ws_reference - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_reference.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_reference.mak" CFG="tuscany_sca_ws_reference - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ws_reference - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ws_reference - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_REFERENCE_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ws/reference/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_REFERENCE_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib axis2_parser.lib /nologo /dll /machine:I386 /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ws\reference\deploy.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_REFERENCE_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ws/reference/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_REFERENCE_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib axis2_parser.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ws\reference\deploy.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca_ws_reference - Win32 Release"
+# Name "tuscany_sca_ws_reference - Win32 Debug"
+# Begin Group "tuscany/sca/ws"
+
+# PROP Default_Filter ""
+# Begin Group "model"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\model\WSServiceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\model\WSServiceBinding.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\Axis2Client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\Axis2Client.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceBindingExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceBindingExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceWrapper.h
+# End Source File
+# End Group
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\ws\xsd\sca-binding-webservice.xsd"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.mak
new file mode 100644
index 0000000000..7c937e0b1b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.mak
@@ -0,0 +1,300 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca_ws_reference.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca_ws_reference - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca_ws_reference - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca_ws_reference - Win32 Release" && "$(CFG)" != "tuscany_sca_ws_reference - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_reference.mak" CFG="tuscany_sca_ws_reference - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ws_reference - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ws_reference - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\Axis2Client.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\WSServiceBinding.obj"
+ -@erase "$(INTDIR)\WSServiceBindingExtension.obj"
+ -@erase "$(INTDIR)\WSServiceWrapper.obj"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ws/reference/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_REFERENCE_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ws_reference.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib axis2_parser.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca_ws_reference.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ws_reference.dll" /implib:"$(OUTDIR)\tuscany_sca_ws_reference.lib" /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\WSServiceBinding.obj" \
+ "$(INTDIR)\Axis2Client.obj" \
+ "$(INTDIR)\WSServiceBindingExtension.obj" \
+ "$(INTDIR)\WSServiceWrapper.obj" \
+ "..\tuscany_sca\Release\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_ws_reference.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+ ..\..\..\runtime\extensions\ws\reference\deploy.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+
+!ELSE
+
+ALL : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\Axis2Client.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(INTDIR)\WSServiceBinding.obj"
+ -@erase "$(INTDIR)\WSServiceBindingExtension.obj"
+ -@erase "$(INTDIR)\WSServiceWrapper.obj"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.lib"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_reference.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ws/reference/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_REFERENCE_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ws_reference.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib axis2_parser.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca_ws_reference.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ws_reference.dll" /implib:"$(OUTDIR)\tuscany_sca_ws_reference.lib" /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\WSServiceBinding.obj" \
+ "$(INTDIR)\Axis2Client.obj" \
+ "$(INTDIR)\WSServiceBindingExtension.obj" \
+ "$(INTDIR)\WSServiceWrapper.obj" \
+ "..\tuscany_sca\Debug\tuscany_sca.lib"
+
+"$(OUTDIR)\tuscany_sca_ws_reference.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_ws_reference.dll"
+ ..\..\..\runtime\extensions\ws\reference\deploy.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca_ws_reference.dep")
+!INCLUDE "tuscany_sca_ws_reference.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca_ws_reference.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Release" || "$(CFG)" == "tuscany_sca_ws_reference - Win32 Debug"
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\model\WSServiceBinding.cpp
+
+"$(INTDIR)\WSServiceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\Axis2Client.cpp
+
+"$(INTDIR)\Axis2Client.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceBindingExtension.cpp
+
+"$(INTDIR)\WSServiceBindingExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceWrapper.cpp
+
+"$(INTDIR)\WSServiceWrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Release"
+
+"tuscany_sca - Win32 Release" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release"
+ cd "..\tuscany_sca_ws_reference"
+
+"tuscany_sca - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ws_reference"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_reference - Win32 Debug"
+
+"tuscany_sca - Win32 Debug" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug"
+ cd "..\tuscany_sca_ws_reference"
+
+"tuscany_sca - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ws_reference"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.dsp
new file mode 100644
index 0000000000..8ddf85e4d9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.dsp
@@ -0,0 +1,153 @@
+# Microsoft Developer Studio Project File - Name="tuscany_sca_ws_service" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tuscany_sca_ws_service - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_service.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_service.mak" CFG="tuscany_sca_ws_service - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ws_service - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ws_service - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tuscany_sca_ws_service - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_SERVICE_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_SERVICE_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /machine:I386 /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ws\service\deploy.bat ..\..\..\ Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_service - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_SERVICE_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_SERVICE_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=..\..\..\runtime\extensions\ws\service\deploy.bat ..\..\..\ Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "tuscany_sca_ws_service - Win32 Release"
+# Name "tuscany_sca_ws_service - Win32 Debug"
+# Begin Group "tuscany/sca/ws"
+
+# PROP Default_Filter ""
+# Begin Group "model"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\model\WSReferenceBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\model\WSReferenceBinding.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Service.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Utils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Utils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSReferenceBindingExtension.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSReferenceBindingExtension.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSServiceProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSServiceProxy.h
+# End Source File
+# End Group
+# Begin Group "xsd"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\..\runtime\extensions\ws\xsd\sca-binding-webservice.xsd"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.mak
new file mode 100644
index 0000000000..ea0dbe2aeb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.mak
@@ -0,0 +1,338 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tuscany_sca_ws_service.dsp
+!IF "$(CFG)" == ""
+CFG=tuscany_sca_ws_service - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to tuscany_sca_ws_service - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "tuscany_sca_ws_service - Win32 Release" && "$(CFG)" != "tuscany_sca_ws_service - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tuscany_sca_ws_service.mak" CFG="tuscany_sca_ws_service - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tuscany_sca_ws_service - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tuscany_sca_ws_service - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_ws_service - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_ws_service.dll"
+
+!ELSE
+
+ALL : "tuscany_sca_ws_dispatcher - Win32 Release" "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_ws_service.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 ReleaseCLEAN" "tuscany_sca_ws_dispatcher - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\Axis2Service.obj"
+ -@erase "$(INTDIR)\Axis2Utils.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\WSReferenceBinding.obj"
+ -@erase "$(INTDIR)\WSReferenceBindingExtension.obj"
+ -@erase "$(INTDIR)\WSServiceProxy.obj"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_SERVICE_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ws_service.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tuscany_sca_ws_service.pdb" /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ws_service.dll" /implib:"$(OUTDIR)\tuscany_sca_ws_service.lib" /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\WSReferenceBinding.obj" \
+ "$(INTDIR)\Axis2Service.obj" \
+ "$(INTDIR)\Axis2Utils.obj" \
+ "$(INTDIR)\WSReferenceBindingExtension.obj" \
+ "$(INTDIR)\WSServiceProxy.obj" \
+ "..\tuscany_sca\Release\tuscany_sca.lib" \
+ "..\tuscany_sca_ws_dispatcher\Release\tuscany_sca_ws_dispatcher.lib"
+
+"$(OUTDIR)\tuscany_sca_ws_service.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca_ws_dispatcher - Win32 Release" "tuscany_sca - Win32 Release" "$(OUTDIR)\tuscany_sca_ws_service.dll"
+ ..\..\..\runtime\extensions\ws\service\deploy.bat ..\..\..\ Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_service - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\tuscany_sca_ws_service.dll"
+
+!ELSE
+
+ALL : "tuscany_sca_ws_dispatcher - Win32 Debug" "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_ws_service.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"tuscany_sca - Win32 DebugCLEAN" "tuscany_sca_ws_dispatcher - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\Axis2Service.obj"
+ -@erase "$(INTDIR)\Axis2Utils.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(INTDIR)\WSReferenceBinding.obj"
+ -@erase "$(INTDIR)\WSReferenceBindingExtension.obj"
+ -@erase "$(INTDIR)\WSServiceProxy.obj"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.dll"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.exp"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.ilk"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.lib"
+ -@erase "$(OUTDIR)\tuscany_sca_ws_service.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../runtime/extensions/ws/service/axis2c/src" /I "../../../runtime/core/src" /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TUSCANY_SCA_WS_SERVICE_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tuscany_sca_ws_service.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=axis2_util.lib axiom.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tuscany_sca_ws_service.pdb" /debug /machine:I386 /out:"$(OUTDIR)\tuscany_sca_ws_service.dll" /implib:"$(OUTDIR)\tuscany_sca_ws_service.lib" /pdbtype:sept /libpath:"..\..\..\deploy\lib" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\WSReferenceBinding.obj" \
+ "$(INTDIR)\Axis2Service.obj" \
+ "$(INTDIR)\Axis2Utils.obj" \
+ "$(INTDIR)\WSReferenceBindingExtension.obj" \
+ "$(INTDIR)\WSServiceProxy.obj" \
+ "..\tuscany_sca\Debug\tuscany_sca.lib" \
+ "..\tuscany_sca_ws_dispatcher\Debug\tuscany_sca_ws_dispatcher.lib"
+
+"$(OUTDIR)\tuscany_sca_ws_service.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "tuscany_sca_ws_dispatcher - Win32 Debug" "tuscany_sca - Win32 Debug" "$(OUTDIR)\tuscany_sca_ws_service.dll"
+ ..\..\..\runtime\extensions\ws\service\deploy.bat ..\..\..\ Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tuscany_sca_ws_service.dep")
+!INCLUDE "tuscany_sca_ws_service.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tuscany_sca_ws_service.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tuscany_sca_ws_service - Win32 Release" || "$(CFG)" == "tuscany_sca_ws_service - Win32 Debug"
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\model\WSReferenceBinding.cpp
+
+"$(INTDIR)\WSReferenceBinding.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Service.cpp
+
+"$(INTDIR)\Axis2Service.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Utils.cpp
+
+"$(INTDIR)\Axis2Utils.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSReferenceBindingExtension.cpp
+
+"$(INTDIR)\WSReferenceBindingExtension.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSServiceProxy.cpp
+
+"$(INTDIR)\WSServiceProxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "tuscany_sca_ws_service - Win32 Release"
+
+"tuscany_sca - Win32 Release" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release"
+ cd "..\tuscany_sca_ws_service"
+
+"tuscany_sca - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Release" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ws_service"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_service - Win32 Debug"
+
+"tuscany_sca - Win32 Debug" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug"
+ cd "..\tuscany_sca_ws_service"
+
+"tuscany_sca - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca.mak CFG="tuscany_sca - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ws_service"
+
+!ENDIF
+
+!IF "$(CFG)" == "tuscany_sca_ws_service - Win32 Release"
+
+"tuscany_sca_ws_dispatcher - Win32 Release" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Release"
+ cd "..\tuscany_sca_ws_service"
+
+"tuscany_sca_ws_dispatcher - Win32 ReleaseCLEAN" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Release" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ws_service"
+
+!ELSEIF "$(CFG)" == "tuscany_sca_ws_service - Win32 Debug"
+
+"tuscany_sca_ws_dispatcher - Win32 Debug" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Debug"
+ cd "..\tuscany_sca_ws_service"
+
+"tuscany_sca_ws_dispatcher - Win32 DebugCLEAN" :
+ cd "..\tuscany_sca_ws_dispatcher"
+ $(MAKE) /$(MAKEFLAGS) /F .\tuscany_sca_ws_dispatcher.mak CFG="tuscany_sca_ws_dispatcher - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\tuscany_sca_ws_service"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca.sln b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca.sln
new file mode 100644
index 0000000000..6121273475
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca.sln
@@ -0,0 +1,73 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca", "tuscany_sca\tuscany_sca.vcproj", "{02DBB555-DFF3-448A-BC35-569640FE73D9}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca_cpp", "tuscany_sca_cpp\tuscany_sca_cpp.vcproj", "{61C87D0D-B2C9-4951-8296-CE2CFCC420A1}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02DBB555-DFF3-448A-BC35-569640FE73D9} = {02DBB555-DFF3-448A-BC35-569640FE73D9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca_ws_reference", "tuscany_sca_ws_reference\tuscany_sca_ws_reference.vcproj", "{7F4E797F-6BDC-472D-A51D-C81C8152DAF6}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02DBB555-DFF3-448A-BC35-569640FE73D9} = {02DBB555-DFF3-448A-BC35-569640FE73D9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca_ws_service", "tuscany_sca_ws_service\tuscany_sca_ws_service.vcproj", "{5DFDD169-BF84-4132-B87F-52AC601C8678}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02DBB555-DFF3-448A-BC35-569640FE73D9} = {02DBB555-DFF3-448A-BC35-569640FE73D9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca_python", "tuscany_sca_python\tuscany_sca_python.vcproj", "{C3DE6545-380A-45AE-9D55-0DE04AB7613C}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca_ws_dispatcher", "tuscany_sca_ws_dispatcher\tuscany_sca_ws_dispatcher.vcproj", "{639AFB7F-A88C-4BCE-A2FC-A4E60CA5BCF5}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tuscany_sca_ruby", "tuscany_sca_ruby\tuscany_sca_ruby.vcproj", "{68D0C3C2-BBB8-470F-936B-5C91C318BF13}"
+ ProjectSection(ProjectDependencies) = postProject
+ {02DBB555-DFF3-448A-BC35-569640FE73D9} = {02DBB555-DFF3-448A-BC35-569640FE73D9}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {02DBB555-DFF3-448A-BC35-569640FE73D9}.Debug.ActiveCfg = Debug|Win32
+ {02DBB555-DFF3-448A-BC35-569640FE73D9}.Debug.Build.0 = Debug|Win32
+ {02DBB555-DFF3-448A-BC35-569640FE73D9}.Release.ActiveCfg = Release|Win32
+ {02DBB555-DFF3-448A-BC35-569640FE73D9}.Release.Build.0 = Release|Win32
+ {61C87D0D-B2C9-4951-8296-CE2CFCC420A1}.Debug.ActiveCfg = Debug|Win32
+ {61C87D0D-B2C9-4951-8296-CE2CFCC420A1}.Debug.Build.0 = Debug|Win32
+ {61C87D0D-B2C9-4951-8296-CE2CFCC420A1}.Release.ActiveCfg = Release|Win32
+ {61C87D0D-B2C9-4951-8296-CE2CFCC420A1}.Release.Build.0 = Release|Win32
+ {7F4E797F-6BDC-472D-A51D-C81C8152DAF6}.Debug.ActiveCfg = Debug|Win32
+ {7F4E797F-6BDC-472D-A51D-C81C8152DAF6}.Debug.Build.0 = Debug|Win32
+ {7F4E797F-6BDC-472D-A51D-C81C8152DAF6}.Release.ActiveCfg = Release|Win32
+ {7F4E797F-6BDC-472D-A51D-C81C8152DAF6}.Release.Build.0 = Release|Win32
+ {5DFDD169-BF84-4132-B87F-52AC601C8678}.Debug.ActiveCfg = Debug|Win32
+ {5DFDD169-BF84-4132-B87F-52AC601C8678}.Debug.Build.0 = Debug|Win32
+ {5DFDD169-BF84-4132-B87F-52AC601C8678}.Release.ActiveCfg = Release|Win32
+ {5DFDD169-BF84-4132-B87F-52AC601C8678}.Release.Build.0 = Release|Win32
+ {C3DE6545-380A-45AE-9D55-0DE04AB7613C}.Debug.ActiveCfg = Debug|Win32
+ {C3DE6545-380A-45AE-9D55-0DE04AB7613C}.Debug.Build.0 = Debug|Win32
+ {C3DE6545-380A-45AE-9D55-0DE04AB7613C}.Release.ActiveCfg = Release|Win32
+ {C3DE6545-380A-45AE-9D55-0DE04AB7613C}.Release.Build.0 = Release|Win32
+ {639AFB7F-A88C-4BCE-A2FC-A4E60CA5BCF5}.Debug.ActiveCfg = Debug|Win32
+ {639AFB7F-A88C-4BCE-A2FC-A4E60CA5BCF5}.Debug.Build.0 = Debug|Win32
+ {639AFB7F-A88C-4BCE-A2FC-A4E60CA5BCF5}.Release.ActiveCfg = Release|Win32
+ {639AFB7F-A88C-4BCE-A2FC-A4E60CA5BCF5}.Release.Build.0 = Release|Win32
+ {68D0C3C2-BBB8-470F-936B-5C91C318BF13}.Debug.ActiveCfg = Debug|Win32
+ {68D0C3C2-BBB8-470F-936B-5C91C318BF13}.Debug.Build.0 = Debug|Win32
+ {68D0C3C2-BBB8-470F-936B-5C91C318BF13}.Release.ActiveCfg = Release|Win32
+ {68D0C3C2-BBB8-470F-936B-5C91C318BF13}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/Build Instructions.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/Build Instructions.txt
new file mode 100644
index 0000000000..847dd5d492
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/Build Instructions.txt
@@ -0,0 +1,30 @@
+Tuscany SCA Build Instructions
+==============================
+
+1) Set the environment variable TUSCANY_SDOCPP to the path of an SDO driver
+
+2) Set the environment variable AXIS2C_HOME to the path of Axis2C (Version 0.92)
+
+NOTE: The environment variables must be set BEFORE launching Visual Studio
+
+3) Rebuild Solution
+
+The output for the build will be in deploy\include, lib and bin
+
+To run the test from a command prompt:
+
+1) Set the environment variable TUSCANY_SCACPP to the location of the built SCA
+ (...tuscany\cpp\sca\deploy)
+
+2) Set the environment variable TUSCANY_SCACPP_SYSTEM_ROOT to the location of the test system
+ ...tuscany\cpp\sca\projects\tuscany_sca\tuscany_sca_test\testSCASystem
+
+3) Add %TUSCANY_SCACPP%\lib and %TUSCANY_SDOCPP%\lib to the PATH
+ (ensure required libraries for SDO are also on the path. e.g. libxml2)
+
+4) cd %TUSCANY_SCACPP%\..\projects\tuscany_sca\tuscany_sca_test\Debug
+
+5) tuscany_sca_test
+
+NOTE: To run the test from the workspace the environment variables must be set
+ BEFORE launching Visual Studio
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/tuscany_sca.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/tuscany_sca.vcproj
new file mode 100644
index 0000000000..be1aba7349
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca/tuscany_sca.vcproj
@@ -0,0 +1,992 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../runtime/core/src,$(TUSCANY_SDOCPP)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SCA_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ PrecompiledHeaderFile=".\Debug/tuscany_sca.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sdo.lib"
+ OutputFile=".\Debug/tuscany_sca.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tuscany_sca.pdb"
+ ImportLibrary=".\Debug/tuscany_sca.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tuscany_sca.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\core\deploy.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../runtime/core/src,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SCA_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\Release/tuscany_sca.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axis2_engine.lib tuscany_sdo_axiom.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_parser.lib axis2_util.lib axiom.lib"
+ OutputFile=".\Release/tuscany_sca.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ ProgramDatabaseFile=".\Release/tuscany_sca.pdb"
+ ImportLibrary=".\Release/tuscany_sca.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tuscany_sca.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\core\deploy.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="tuscany/sca"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\export.h">
+ </File>
+ <Filter
+ Name="core"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\Operation.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\Operation.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\SCARuntime.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\SCARuntime.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\ServiceProxy.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\ServiceProxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\ServiceWrapper.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\ServiceWrapper.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\TuscanyRuntime.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\core\TuscanyRuntime.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="model"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Binding.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Binding.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Component.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Component.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ComponentType.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ComponentType.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Composite.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Composite.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\CompositeReference.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\CompositeReference.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\CompositeService.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\CompositeService.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Contract.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Contract.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Interface.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Interface.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ModelLoader.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ModelLoader.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Reference.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Reference.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ReferenceBinding.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ReferenceBinding.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ReferenceType.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ReferenceType.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Service.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Service.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ServiceBinding.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ServiceBinding.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ServiceType.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\ServiceType.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Wire.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\Wire.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLDefinition.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLDefinition.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLInterface.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLInterface.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLOperation.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\model\WSDLOperation.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="util"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\DefaultLogWriter.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\DefaultLogWriter.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Exceptions.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Exceptions.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\File.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\File.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\FileLogWriter.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\FileLogWriter.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Library.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Library.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Logger.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Logger.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Logging.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\LogWriter.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\LogWriter.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Utils.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\util\Utils.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="extension"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\ImplementationExtension.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\ImplementationExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\InterfaceExtension.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\InterfaceExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\ReferenceBindingExtension.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\ReferenceBindingExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\ServiceBindingExtension.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;SCA_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\core\src\tuscany\sca\extension\ServiceBindingExtension.h">
+ </File>
+ </Filter>
+ </Filter>
+ <File
+ RelativePath="Build Instructions.txt">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.vcproj
new file mode 100644
index 0000000000..73802bd5f1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.vcproj
@@ -0,0 +1,472 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca_cpp"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../runtime/extensions/cpp/src,../../../deploy/include,$(TUSCANY_SDOCPP)/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\Release/tuscany_sca_cpp.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile=".\Release/tuscany_sca_cpp.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\deploy\lib,$(TUSCANY_SDOCPP)\lib"
+ ProgramDatabaseFile=".\Release/tuscany_sca_cpp.pdb"
+ ImportLibrary=".\Release/tuscany_sca_cpp.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tuscany_sca_cpp.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\cpp\deploy.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../runtime/extensions/cpp/src,../../../deploy/include,$(TUSCANY_SDOCPP)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ PrecompiledHeaderFile=".\Debug/tuscany_sca_cpp.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile=".\Debug/tuscany_sca_cpp.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\deploy\lib,$(TUSCANY_SDOCPP)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tuscany_sca_cpp.pdb"
+ ImportLibrary=".\Debug/tuscany_sca_cpp.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tuscany_sca_cpp.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\cpp\deploy.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="osoa/sca"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\ComponentContext.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\ComponentContext.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\CompositeContext.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\CompositeContext.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\export.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\sca.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\osoa\sca\ServiceRuntimeException.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="tuscany/sca/cpp"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\ComponentContextImpl.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\ComponentContextImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CompositeContextImpl.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CompositeContextImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPExtension.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPImplementationExtension.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPImplementationExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPInterfaceExtension.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPInterfaceExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceProxy.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceProxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceWrapper.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\CPPServiceWrapper.h">
+ </File>
+ <Filter
+ Name="model"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPImplementation.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPImplementation.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPInterface.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPInterface.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPReferenceBinding.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPReferenceBinding.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPServiceBinding.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_CPP_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\cpp\src\tuscany\sca\cpp\model\CPPServiceBinding.h">
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_python/tuscany_sca_python.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_python/tuscany_sca_python.vcproj
new file mode 100644
index 0000000000..a9ca8290d6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_python/tuscany_sca_python.vcproj
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca_python"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../runtime/extensions/python/src,../../../deploy/include, $(TUSCANY_SDOCPP)/include, $(PYTHON_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_PYTHON_EXPORTS"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile="$(OutDir)/tuscany_sca_python.dll"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib, $(TUSCANY_SDOCPP)/lib, $(PYTHON_HOME)/libs,"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/tuscany_sca_python.pdb"
+ SubSystem="2"
+ ImportLibrary="$(OutDir)/tuscany_sca_python.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\python\deploy.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../runtime/extensions/python/src,../../../deploy/include, $(TUSCANY_SDOCPP)/include, $(PYTHON_HOME)/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_PYTHON_EXPORTS"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile="$(OutDir)/tuscany_sca_python.dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib, $(TUSCANY_SDOCPP)/lib, $(PYTHON_HOME)/libs"
+ GenerateDebugInformation="TRUE"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(OutDir)/tuscany_sca_python.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\python\deploy.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="tuscany/sca/python"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\export.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonExtension.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonImplementationExtension.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonImplementationExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonInterfaceExtension.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonInterfaceExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceProxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceProxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceRuntimeException.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceWrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\PythonServiceWrapper.h">
+ </File>
+ <Filter
+ Name="model"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonImplementation.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonImplementation.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonInterface.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonInterface.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonReferenceBinding.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonReferenceBinding.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonServiceBinding.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\python\src\tuscany\sca\python\model\PythonServiceBinding.h">
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.vcproj
new file mode 100644
index 0000000000..72eac9aa24
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.vcproj
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca_ruby"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../runtime/extensions/ruby/src;$(TUSCANY_SCACPP)/include;&quot;$(TUSCANY_SDOCPP)/include&quot;;&quot;$(RUBY_HOME)/lib/ruby/1.8/i386-mswin32&quot;"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_RUBY_EXPORTS;_MSC_VER=1200"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib msvcrt-ruby18.lib"
+ OutputFile="$(OutDir)/tuscany_sca_ruby.dll"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib, $(TUSCANY_SDOCPP)/lib, $(RUBY_HOME)/lib,"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/tuscany_sca_ruby.pdb"
+ SubSystem="2"
+ ImportLibrary="$(OutDir)/tuscany_sca_ruby.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ruby\deploy.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../runtime/extensions/ruby/src;$(TUSCANY_SCACPP)/include;&quot;$(TUSCANY_SDOCPP)/include&quot;;&quot;$(RUBY_HOME)/lib/ruby/1.8/i386-mswin32&quot;"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_RUBY_EXPORTS;_MSC_VER=1200"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib msvcrt-ruby18.lib"
+ OutputFile="$(OutDir)/tuscany_sca_ruby.dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib, $(TUSCANY_SDOCPP)/lib, $(RUBY_HOME)/lib,"
+ GenerateDebugInformation="TRUE"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(OutDir)/tuscany_sca_ruby.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ruby\deploy.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="tuscany/sca/ruby"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\export.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\Ruby.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyCompositeContext.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyExtension.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyImplementationExtension.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyImplementationExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceProxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceProxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceWrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\RubyServiceWrapper.h">
+ </File>
+ <Filter
+ Name="model"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyImplementation.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyImplementation.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyReferenceBinding.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyReferenceBinding.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyServiceBinding.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ruby\src\tuscany\sca\ruby\model\RubyServiceBinding.h">
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.vcproj
new file mode 100644
index 0000000000..8093234c80
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.vcproj
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca_ws_dispatcher"
+ ProjectGUID="{639AFB7F-A88C-4BCE-A2FC-A4E60CA5BCF5}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axiom.lib axis2_util.lib axis2_engine.lib"
+ OutputFile="$(OutDir)/tuscany_sca_ws_dispatcher.dll"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib,$(AXIS2C_HOME)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/tuscany_sca_ws_dispatcher.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ws\service\deploymodule.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axiom.lib axis2_util.lib axis2_engine.lib"
+ OutputFile="$(OutDir)/tuscany_sca_ws_dispatcher.dll"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib,$(AXIS2C_HOME)/lib"
+ GenerateDebugInformation="FALSE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ws\service\deploymodule.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Dispatcher.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2DispatcherModule.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.vcproj
new file mode 100644
index 0000000000..844732078c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.vcproj
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca_ws_reference"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../runtime/extensions/ws/reference/axis2c/src,../../../runtime/core/src,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ PrecompiledHeaderFile=".\Debug/tuscany_sca_ws_reference.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axis2_util.lib axiom.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib axis2_parser.lib"
+ OutputFile=".\Debug/tuscany_sca_ws_reference.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\deploy\lib,$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tuscany_sca_ws_reference.pdb"
+ ImportLibrary=".\Debug/tuscany_sca_ws_reference.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tuscany_sca_ws_reference.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ws\reference\deploy.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../runtime/extensions/ws/reference/axis2c/src,../../../runtime/core/src,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\Release/tuscany_sca_ws_reference.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axis2_util.lib axiom.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib axis2_parser.lib"
+ OutputFile=".\Release/tuscany_sca_ws_reference.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\deploy\lib,$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ ProgramDatabaseFile=".\Release/tuscany_sca_ws_reference.pdb"
+ ImportLibrary=".\Release/tuscany_sca_ws_reference.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tuscany_sca_ws_reference.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ws\reference\deploy.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="tuscany/sca/ws"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\Axis2Client.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\Axis2Client.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceBindingExtension.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceBindingExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceWrapper.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\WSServiceWrapper.h">
+ </File>
+ <Filter
+ Name="model"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\model\WSServiceBinding.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_REFERENCE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\reference\axis2c\src\tuscany\sca\ws\model\WSServiceBinding.h">
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.vcproj
new file mode 100644
index 0000000000..ec65df0c2e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.vcproj
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tuscany_sca_ws_service"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../../runtime/extensions/ws/service/axis2c/src,../../../runtime/core/src,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ PrecompiledHeaderFile=".\Release/tuscany_sca_ws_service.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="axis2_util.lib axiom.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile=".\Release/tuscany_sca_ws_service.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\deploy\lib,$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ ProgramDatabaseFile=".\Release/tuscany_sca_ws_service.pdb"
+ ImportLibrary=".\Release/tuscany_sca_ws_service.lib"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tuscany_sca_ws_service.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ws\service\deploy.bat ..\..\..\ Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../runtime/extensions/ws/service/axis2c/src,../../../runtime/core/src,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ PrecompiledHeaderFile=".\Debug/tuscany_sca_ws_service.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="axis2_util.lib axiom.lib odbc32.lib odbccp32.lib axis2_engine.lib tuscany_sdo_axiom.lib tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile=".\Debug/tuscany_sca_ws_service.dll"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\..\..\deploy\lib,$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tuscany_sca_ws_service.pdb"
+ ImportLibrary=".\Debug/tuscany_sca_ws_service.lib"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tuscany_sca_ws_service.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\runtime\extensions\ws\service\deploy.bat ..\..\..\ Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="tuscany/sca/ws"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Service.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Utils.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\Axis2Utils.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSReferenceBindingExtension.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSReferenceBindingExtension.h">
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSServiceProxy.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\WSServiceProxy.h">
+ </File>
+ <Filter
+ Name="model"
+ Filter="">
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\model\WSReferenceBinding.cpp">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;TUSCANY_SCA_WS_SERVICE_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\..\runtime\extensions\ws\service\axis2c\src\tuscany\sca\ws\model\WSReferenceBinding.h">
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/Makefile.am
new file mode 100644
index 0000000000..8b13058152
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = core extensions
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/Makefile.am
new file mode 100644
index 0000000000..2b9491ec1c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/deploy.bat
new file mode 100644
index 0000000000..178ffb7b39
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/deploy.bat
@@ -0,0 +1,72 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set srcdir=%rootdir%\runtime\core\src
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %deploydir%\bin mkdir %deploydir%\bin
+if not exist %deploydir%\lib mkdir %deploydir%\lib
+if not exist %deploydir%\include mkdir %deploydir%\include
+if not exist %deploydir%\include\tuscany mkdir %deploydir%\include\tuscany
+if not exist %deploydir%\include\tuscany\sca mkdir %deploydir%\include\tuscany\sca
+if not exist %deploydir%\include\tuscany\sca\core mkdir %deploydir%\include\tuscany\sca\core
+if not exist %deploydir%\include\tuscany\sca\extension mkdir %deploydir%\include\tuscany\sca\extension
+if not exist %deploydir%\include\tuscany\sca\model mkdir %deploydir%\include\tuscany\sca\model
+if not exist %deploydir%\include\tuscany\sca\util mkdir %deploydir%\include\tuscany\sca\util
+if not exist %deploydir%\xsd mkdir %deploydir%\xsd
+
+del %deploydir%\bin\tuscany_sca.*
+del %deploydir%\lib\*.lib
+
+copy %srcdir%\tuscany\sca\*.h %deploydir%\include\tuscany\sca
+copy %srcdir%\tuscany\sca\core\*.h %deploydir%\include\tuscany\sca\core
+copy %srcdir%\tuscany\sca\extension\*.h %deploydir%\include\tuscany\sca\extension
+copy %srcdir%\tuscany\sca\model\*.h %deploydir%\include\tuscany\sca\model
+copy %srcdir%\tuscany\sca\util\*.h %deploydir%\include\tuscany\sca\util
+
+copy %rootdir%\xsd\*.* %deploydir%\xsd
+
+copy %inpath%\tuscany_sca.lib %deploydir%\lib
+copy %inpath%\tuscany_sca.dll %deploydir%\bin
+
+if exist %inpath%\tuscany_sca.pdb copy %inpath%\tuscany_sca.pdb %deploydir%\bin
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/Makefile.am
new file mode 100644
index 0000000000..ce28bed32e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/Makefile.am
@@ -0,0 +1,74 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+lib_LTLIBRARIES = libtuscany_sca.la
+
+nobase_include_HEADERS = \
+tuscany/sca/*.h \
+tuscany/sca/core/*.h \
+tuscany/sca/model/*.h \
+tuscany/sca/util/*.h \
+tuscany/sca/extension/*.h
+
+## To list the source files execute the following:
+## ls -1 tuscany/sca/util/*.cpp tuscany/sca/extension/*.cpp tuscany/sca/model/*.cpp tuscany/sca/core/*.cpp tuscany/sca/cpp/*.cpp tuscany/sca/ws/*.cpp | awk '{ print $1 " \\" }'
+## and copy/paste the output below
+libtuscany_sca_la_SOURCES = \
+tuscany/sca/core/Operation.cpp \
+tuscany/sca/core/SCARuntime.cpp \
+tuscany/sca/core/ServiceProxy.cpp \
+tuscany/sca/core/ServiceWrapper.cpp \
+tuscany/sca/core/TuscanyRuntime.cpp \
+tuscany/sca/extension/ImplementationExtension.cpp \
+tuscany/sca/extension/InterfaceExtension.cpp \
+tuscany/sca/extension/ReferenceBindingExtension.cpp \
+tuscany/sca/extension/ServiceBindingExtension.cpp \
+tuscany/sca/model/Binding.cpp \
+tuscany/sca/model/Component.cpp \
+tuscany/sca/model/ComponentType.cpp \
+tuscany/sca/model/Composite.cpp \
+tuscany/sca/model/CompositeReference.cpp \
+tuscany/sca/model/CompositeService.cpp \
+tuscany/sca/model/Contract.cpp \
+tuscany/sca/model/Interface.cpp \
+tuscany/sca/model/ModelLoader.cpp \
+tuscany/sca/model/ReferenceBinding.cpp \
+tuscany/sca/model/Reference.cpp \
+tuscany/sca/model/ReferenceType.cpp \
+tuscany/sca/model/ServiceBinding.cpp \
+tuscany/sca/model/Service.cpp \
+tuscany/sca/model/ServiceType.cpp \
+tuscany/sca/model/Wire.cpp \
+tuscany/sca/model/WSDLDefinition.cpp \
+tuscany/sca/model/WSDLInterface.cpp \
+tuscany/sca/model/WSDLOperation.cpp \
+tuscany/sca/util/DefaultLogWriter.cpp \
+tuscany/sca/util/Exceptions.cpp \
+tuscany/sca/util/File.cpp \
+tuscany/sca/util/FileLogWriter.cpp \
+tuscany/sca/util/Library.cpp \
+tuscany/sca/util/Logger.cpp \
+tuscany/sca/util/LogWriter.cpp \
+tuscany/sca/util/Utils.cpp
+
+libtuscany_sca_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.cpp
new file mode 100644
index 0000000000..aa030a1ce7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.cpp
@@ -0,0 +1,372 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/core/Operation.h"
+#include <stdarg.h>
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ // ===========
+ // Constructor
+ // ===========
+ Operation::Operation(const char* operationName)
+ {
+ LOGENTRY(1,"Operation::constructor");
+
+ if (operationName != 0)
+ {
+ name = operationName;
+ }
+
+ LOGEXIT(1,"Operation::constructor");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ Operation::~Operation()
+ {
+ LOGENTRY(1,"Operation::destructor");
+ clean();
+ LOGEXIT(1,"Operation::destructor");
+ }
+
+ // ==========
+ // Copy Constructor
+ // ==========
+ Operation::Operation(const Operation& op)
+ {
+ LOGENTRY(1,"Operation::copy contructor");
+ copy(op);
+ LOGEXIT(1,"Operation::copy contructor");
+ }
+
+ // ==========
+ // operator=
+ // ==========
+ Operation& Operation::operator=(const Operation& op)
+ {
+ LOGENTRY(1,"Operation::operator=");
+ if (&op != this)
+ {
+ copy(op);
+ }
+ LOGEXIT(1,"Operation::operator=");
+ return *this;
+ }
+
+ // ==========
+ // Clean
+ // ==========
+ void Operation::clean()
+ {
+ LOGENTRY(1,"Operation::clean");
+ for (unsigned int i = 0; i < getNParms(); i++)
+ {
+ const Parameter& parm = getParameter(i);
+ if (parm.getType() == DATAOBJECT)
+ {
+ delete (DataObjectPtr*)parm.getValue();
+ }
+ }
+
+ parameters.empty();
+
+ if (getReturnType() == DATAOBJECT)
+ {
+ delete (DataObjectPtr*)getReturnValue();
+ }
+
+ LOGEXIT(1,"Operation::clean");
+ }
+
+ // ==========
+ // Copy
+ // ==========
+ void Operation::copy(const Operation& op)
+ {
+ LOGENTRY(1,"Operation::copy");
+ clean();
+ for (unsigned int i = 0; i < op.getNParms(); i++)
+ {
+ const Parameter& parm = op.getParameter(i);
+ if (parm.getType() == DATAOBJECT)
+ {
+ addParameter((const DataObject*)parm.getValue());
+ }
+ else
+ {
+ parameters.insert(parameters.end(), parm);
+ }
+ }
+
+ if (getReturnType() == DATAOBJECT)
+ {
+ setReturnValue((const DataObjectPtr*)op.getReturnValue());
+ }
+ else
+ {
+ returnValue = op.returnValue;
+ }
+
+ LOGEXIT(1,"Operation::copy");
+ }
+
+ // ==============================================
+ // getParameter: return parameter at position pos
+ // ==============================================
+ void* Operation::getParameterValue(unsigned int pos) const
+ {
+ if (pos < parameters.size())
+ {
+ return parameters[pos].getValue();
+ }
+
+ return 0;
+ }
+
+ // ==============================================
+ // getParameter: return of parameter
+ // ==============================================
+ const Operation::Parameter& Operation::getParameter(unsigned int pos) const
+ {
+ if (pos < parameters.size())
+ {
+ return parameters[pos];
+ }
+
+ throw "index out of range";
+ }
+
+
+ // ==============================================
+ // getParameterType: return type of parameter
+ // ==============================================
+ Operation::ParameterType Operation::getParameterType(unsigned int pos) const
+ {
+ if (pos < parameters.size())
+ {
+ return parameters[pos].getType();
+ }
+
+ return VOID_TYPE;
+ }
+
+ // ===========================================
+ // addParameter: set parameter at position pos
+ // ===========================================
+ void Operation::addParameter(const void *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(void*)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, VOID_TYPE));
+ }
+
+ void Operation::addParameter(const bool *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(bool)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, BOOL));
+ }
+
+ void Operation::addParameter(const short *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(short)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, SHORT));
+ }
+
+ void Operation::addParameter(const int *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(int)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, INT));
+ }
+
+ void Operation::addParameter(const long *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(long)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, LONG));
+ }
+
+ void Operation::addParameter(const unsigned short *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(unsigned short)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, USHORT));
+ }
+
+ void Operation::addParameter(const unsigned int *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(unsigned int)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, UINT));
+ }
+
+ void Operation::addParameter(const unsigned long *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(unsigned long)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, ULONG));
+ }
+
+ void Operation::addParameter(const float *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(float)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, FLOAT));
+ }
+
+ void Operation::addParameter(const double *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(double)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, DOUBLE));
+ }
+
+ void Operation::addParameter(const long double *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(long double)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, LONGDOUBLE));
+ }
+
+ void Operation::addParameter(const char* *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(char*)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, CHARS));
+ }
+
+ void Operation::addParameter(const char *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(char)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, CHAR));
+ }
+
+ void Operation::addParameter(const string *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(string)");
+ parameters.insert(parameters.end(), Parameter((void*)parm, STRING));
+ }
+
+ void Operation::addParameter(const DataObjectPtr *parm)
+ {
+ LOGINFO(4, "Operation::addParameter(DataObjectPtr)");
+ parameters.insert(parameters.end(), Parameter((void*)new DataObjectPtr(*parm), DATAOBJECT));
+ }
+
+ Operation::Parameter::Parameter(void* val, Operation::ParameterType typ)
+ : value(val), type(typ)
+ {
+ }
+
+ // ===========================================
+ // setReturnValue
+ // ===========================================
+ void Operation::setReturnValue(const void *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(void*)");
+ returnValue = Parameter((void*)parm, VOID_TYPE);
+ }
+
+ void Operation::setReturnValue(const bool *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(bool*)");
+ returnValue = Parameter((void*)parm, BOOL);
+ }
+
+ void Operation::setReturnValue(const short *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(short*)");
+ returnValue = Parameter((void*)parm, SHORT);
+ }
+
+ void Operation::setReturnValue(const int *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(int)");
+ returnValue = Parameter((void*)parm, INT);
+ }
+
+ void Operation::setReturnValue(const long *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(long*)");
+ returnValue = Parameter((void*)parm, LONG);
+ }
+
+ void Operation::setReturnValue(const unsigned short *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(unsigned short*)");
+ returnValue = Parameter((void*)parm, USHORT);
+ }
+
+ void Operation::setReturnValue(const unsigned int *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(unsigned int)");
+ returnValue = Parameter((void*)parm, UINT);
+ }
+
+ void Operation::setReturnValue(const unsigned long *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(unsigned long*)");
+ returnValue = Parameter((void*)parm, ULONG);
+ }
+
+ void Operation::setReturnValue(const float *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(float*)");
+ returnValue = Parameter((void*)parm, FLOAT);
+ }
+
+ void Operation::setReturnValue(const double *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(double*)");
+ returnValue = Parameter((void*)parm, DOUBLE);
+ }
+
+ void Operation::setReturnValue(const long double *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(long double*)");
+ returnValue = Parameter((void*)parm, LONGDOUBLE);
+ }
+
+ void Operation::setReturnValue(const char *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(char)");
+ returnValue = Parameter((void*)parm, CHAR);
+ }
+
+ void Operation::setReturnValue(const char* *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(char*)");
+ returnValue = Parameter((void*)parm, CHARS);
+ }
+
+ void Operation::setReturnValue(const string *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(string*)");
+ returnValue = Parameter((void*)parm, STRING);
+ }
+
+ void Operation::setReturnValue(const DataObjectPtr *parm)
+ {
+ LOGINFO(4, "Operation::setReturnValue(DataObjectPtr*)");
+ returnValue = Parameter((void*)new DataObjectPtr(*parm), DATAOBJECT);
+ }
+
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.h
new file mode 100644
index 0000000000..84338ae9e8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/Operation.h
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_core_operation_h
+#define tuscany_sca_core_operation_h
+#include "tuscany/sca/export.h"
+#include "commonj/sdo/SDO.h"
+using commonj::sdo::DataObjectPtr;
+#include <string>
+using std::string;
+#include <vector>
+using std::vector;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Holds the details of a single invocation of a business method.
+ * This class is used to pass the parameters and operation name from the
+ * client to a service. It will also hold the return value on the
+ * return from the business method.
+ */
+ class Operation
+ {
+ public:
+ /**
+ * Create a new operation.
+ * @param operationName The method name of the business method to be invoked.
+ * @param numParameters The number of parameters to be passed.
+ */
+ SCA_API Operation(const char* operationName = 0);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Operation();
+
+ /**
+ * Copy constructor.
+ */
+ SCA_API Operation(const Operation& op);
+
+ /**
+ * Assignment operator.
+ */
+ SCA_API Operation& operator=(const Operation& op);
+
+ /**
+ * Return the operation name.
+ * @return The name of the operation.
+ */
+ SCA_API const string& getName() const {return name;}
+
+
+ enum ParameterType
+ {
+ UNSET = 0,
+ VOID_TYPE,
+ BOOL,
+ SHORT,
+ INT,
+ LONG,
+ USHORT,
+ UINT,
+ ULONG,
+ FLOAT,
+ DOUBLE,
+ LONGDOUBLE,
+ CHARS,
+ CHAR,
+ STRING,
+ DATAOBJECT
+ };
+
+ class Parameter
+ {
+ public:
+ SCA_API Parameter(void* value = NULL, ParameterType type = VOID_TYPE);
+ SCA_API void* getValue() const {return value;}
+ SCA_API ParameterType getType() const {return type;}
+
+ private:
+ void* value;
+ ParameterType type;
+ };
+
+ /**
+ * Set a return value for the operation.
+ * @param retVal Pointer to the return value.
+ */
+ SCA_API void setReturnValue(const void *retVal);
+ SCA_API void setReturnValue(const bool *retVal);
+ SCA_API void setReturnValue(const short *retVal);
+ SCA_API void setReturnValue(const int *retVal);
+ SCA_API void setReturnValue(const long *retVal);
+ SCA_API void setReturnValue(const unsigned short *retVal);
+ SCA_API void setReturnValue(const unsigned int *retVal);
+ SCA_API void setReturnValue(const unsigned long *retVal);
+ SCA_API void setReturnValue(const float *retVal);
+ SCA_API void setReturnValue(const double *retVal);
+ SCA_API void setReturnValue(const long double *retVal);
+ SCA_API void setReturnValue(const char *retVal);
+ SCA_API void setReturnValue(const char* *retVal);
+ SCA_API void setReturnValue(const string *retVal);
+ SCA_API void setReturnValue(const DataObjectPtr *retVal);
+
+ /**
+ * Set a parameter on the operation.
+ * @param pos The position of the parameter in the parameter list.
+ * @param parm Pointer to the parameter to be passed.
+ */
+ SCA_API void addParameter(const void *parm);
+ SCA_API void addParameter(const bool *parm);
+ SCA_API void addParameter(const short *parm);
+ SCA_API void addParameter(const int *parm);
+ SCA_API void addParameter(const long *parm);
+ SCA_API void addParameter(const unsigned short *parm);
+ SCA_API void addParameter(const unsigned int *parm);
+ SCA_API void addParameter(const unsigned long *parm);
+ SCA_API void addParameter(const float *parm);
+ SCA_API void addParameter(const double *parm);
+ SCA_API void addParameter(const long double *parm);
+ SCA_API void addParameter(const char *parm);
+ SCA_API void addParameter(const char* *parm);
+ SCA_API void addParameter(const string *parm);
+ SCA_API void addParameter(const DataObjectPtr *parm);
+
+ SCA_API unsigned int getNParms() const {return parameters.size();}
+
+ /**
+ * Get a parameter from the operation.
+ * @param pos The position of the parameter in the parameter list.
+ * @return Pointer to the paramter at the given postion. Should be
+ * cast to the appropriate type.
+ */
+ SCA_API const Parameter& getParameter(unsigned int pos) const;
+
+ /**
+ * Get a parameter type from the operation.
+ * @param pos The position of the parameter in the parameter list.
+ * @return Pointer to the paramter at the given postion. Should be
+ * cast to the appropriate type.
+ */
+ SCA_API ParameterType getParameterType(unsigned int pos) const;
+
+ /**
+ * Get a parameter from the operation.
+ * @param pos The position of the parameter in the parameter list.
+ * @return Pointer to the paramter at the given postion. Should be
+ * cast to the appropriate type.
+ */
+ SCA_API void* getParameterValue(unsigned int pos) const;
+
+ SCA_API ParameterType getReturnType() const {return returnValue.getType();}
+ SCA_API void* getReturnValue() const {return returnValue.getValue();}
+
+ private:
+ /**
+ * Operation name (method name).
+ */
+ string name;
+
+ /**
+ * Array of parameters.
+ */
+ typedef std::vector<Parameter> PARAMETER_VECTOR;
+
+ PARAMETER_VECTOR parameters;
+
+ Parameter returnValue;
+
+ void clean();
+ void copy(const Operation& op);
+
+ };
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_core_operation_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp
new file mode 100644
index 0000000000..49ec646bb1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp
@@ -0,0 +1,487 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/ModelLoader.h"
+#include "tuscany/sca/util/File.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+
+#if defined(WIN32) || defined (_WINDOWS)
+#include <windows.h>
+#endif
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Environment variable names
+ */
+ static const char* TUSCANY_SCACPP = "TUSCANY_SCACPP";
+ static const char* TUSCANY_SCACPP_SYSTEM_ROOT = "TUSCANY_SCACPP_SYSTEM_ROOT";
+ static const char* TUSCANY_SCACPP_DEFAULT_COMPONENT = "TUSCANY_SCACPP_DEFAULT_COMPONENT";
+
+ static const char* TUSCANY_SCACPP_ROOT = "TUSCANY_SCACPP_ROOT";
+ static const char* TUSCANY_SCACPP_COMPONENT = "TUSCANY_SCACPP_COMPONENT";
+ static const char* TUSCANY_SCACPP_PATH = "TUSCANY_SCACPP_PATH";
+
+ // ==========================================================
+ // Initialize static class member to not pointing at anything
+ // ==========================================================
+ SCARuntime* SCARuntime::instance = 0;
+ string SCARuntime::systemRoot = "";
+ string SCARuntime::systemPath = "";
+ string SCARuntime::defaultComponentName = "";
+
+
+ // ==========================================================
+ // Set the system configuration root
+ // ==========================================================
+ void SCARuntime::setSystemRoot(const string& root)
+ {
+ LOGENTRY(1, "SCARuntime::setSystemRoot");
+ systemRoot = root;
+ LOGINFO_1(3, "SCARuntime::setSystemRoot - set to %s", root.c_str());
+ LOGEXIT(1, "SCARuntime::setSystemRoot");
+ }
+
+ // ==========================================================
+ // Set the system configuration root
+ // ==========================================================
+ void SCARuntime::setSystemPath(const string& path)
+ {
+ LOGENTRY(1, "SCARuntime::setSystemPath");
+ systemPath = path;
+ LOGINFO_1(3, "SCARuntime::setSystemPath - set to %s", path.c_str());
+ LOGEXIT(1, "SCARuntime::setSystemPath");
+ }
+
+ // ==========================================================
+ // Set the default component name
+ // ==========================================================
+ void SCARuntime::setDefaultComponentName(const string& componentName)
+ {
+ LOGENTRY(1, "SCARuntime::setDefaultComponentName");
+ defaultComponentName = componentName;
+ LOGINFO_1(3, "SCARuntime::setDefaultComponentName - set to %s", componentName.c_str());
+ LOGEXIT(1, "SCARuntime::setDefaultComponentName");
+ }
+
+ // ===================================================================
+ // Constructor for the SCARuntime class. This will be a singleton that
+ // holds all the information about the current runtime.
+ // ===================================================================
+ SCARuntime::SCARuntime() : system(0), defaultComponent(0)
+ {
+ LOGENTRY(1, "SCARuntime::constructor");
+
+ // Locate the SCA install root
+ char* root = 0;
+ root = getenv(TUSCANY_SCACPP);
+ if (root == 0)
+ {
+ string msg = TUSCANY_SCACPP;
+ msg += " environment variable not set";
+ throw SystemConfigurationException(msg.c_str());
+ }
+ else
+ {
+ SCARoot = root;
+ }
+
+ LOGEXIT(1, "SCARuntime::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the SCARuntime class.
+ // ===================================================================
+ SCARuntime::~SCARuntime()
+ {
+ LOGENTRY(1, "SCARuntime::destructor");
+
+ if (system)
+ {
+ delete system;
+ }
+
+ LOGEXIT(1, "SCARuntime::destructor");
+ }
+
+ // =============================================================
+ // Get the instance of the runtime, creates it if does not exist
+ // static method
+ // =============================================================
+ SCARuntime* SCARuntime::getInstance()
+ {
+ LOGENTRY(1, "SCARuntime::getInstance");
+
+ if (instance == NULL)
+ {
+ instance = new SCARuntime();
+
+ // load extensions
+ instance->loadExtensions();
+
+ if (systemRoot == "")
+ {
+ // Get root from environment variable TUSCANY_SCACPP_ROOT
+ char* systemRootEnv = getenv(TUSCANY_SCACPP_ROOT);
+ if (systemRootEnv == 0)
+ {
+ // Get root from environment variable TUSCANY_SCACPP_SYSTEM_ROOT
+ systemRootEnv = getenv(TUSCANY_SCACPP_SYSTEM_ROOT);
+ }
+ if (systemRootEnv == 0)
+ {
+ string msg = TUSCANY_SCACPP_ROOT;
+ msg += " environment variable not set";
+ throw SystemConfigurationException(msg.c_str());
+ }
+
+ systemRoot = systemRootEnv;
+ }
+ if (systemPath == "")
+ {
+
+ // Get system path from environment variable TUSCANY_SCACPP_PATH
+ char* systemPathEnv = getenv(TUSCANY_SCACPP_PATH);
+ if (systemPathEnv == 0)
+ {
+ // Make the path optional for now
+// string msg = TUSCANY_SCACPP_PATH;
+// msg += " environment variable not set";
+// throw SystemConfigurationException(msg.c_str());
+ }
+ else
+ {
+ systemPath = systemPathEnv;
+ }
+ }
+ }
+
+ LOGEXIT(1, "SCARuntime::getInstance");
+
+ return instance;
+
+ }
+
+
+ // =============================================================
+ // Release the instance of the runtime.
+ // =============================================================
+ void SCARuntime::releaseInstance()
+ {
+ LOGENTRY(1, "SCARuntime::releaseInstance");
+
+ if (instance)
+ {
+ delete instance;
+ instance = 0;
+ systemRoot = "";
+ systemPath = "";
+ defaultComponentName = "";
+ }
+
+ LOGEXIT(1, "SCARuntime::releaseInstance");
+ }
+
+ // ======================================
+ // Load up all the details of the runtime
+ // ======================================
+ void SCARuntime::load()
+ {
+ LOGENTRY(1, "SCARuntime::load");
+
+ LOGINFO_1(2,"configuration root: %s", systemRoot.c_str());
+ LOGINFO_1(2,"configuration path: %s", systemPath.c_str());
+
+ // Load the system composite
+ ModelLoader loader(system);
+ loader.load(systemRoot, systemPath);
+
+ LOGEXIT(1, "SCARuntime::load");
+ }
+
+
+ // ======================================
+ // Load up extensions to the runtime
+ // ======================================
+ void SCARuntime::loadExtensions()
+ {
+ LOGENTRY(1, "SCARuntime::loadExtensions");
+
+ string extensionsRoot = SCARoot + "/extensions";
+
+#if defined(WIN32) || defined (_WINDOWS)
+ string pattern = "*.dll";
+#else
+ string pattern = "*.so";
+#endif
+
+ Files files(extensionsRoot, pattern, true);
+ for (unsigned int i=0; i < files.size(); i++)
+ {
+ try
+ {
+ Library lib = Library( files[i].getDirectory() + "/" + files[i].getFileName());
+ extensionsList.push_back(lib);
+ TUSCANY_IMPLEMENTATION_EXTENSION_INITIALIZE extension =
+ (TUSCANY_IMPLEMENTATION_EXTENSION_INITIALIZE)lib.getSymbol("tuscany_sca_extension_initialize");
+ if (extension)
+ {
+ extension();
+ }
+ }
+ catch (TuscanyRuntimeException& ex)
+ {
+ LOGERROR_3(0, "SCARuntime::loadExtensions failed to load extension library: %s: %s: %s",
+ files[i].getFileName().c_str(), ex.getEClassName(), ex.getMessageText());
+ }
+ }
+
+ LOGEXIT(1, "SCARuntime::loadExtensions");
+ }
+
+
+ // ======================================
+ // register an interfaceExtension
+ // ======================================
+ void SCARuntime::registerInterfaceExtension(InterfaceExtension* extension)
+ {
+ LOGENTRY(1, "SCARuntime::registerInterfaceExtension");
+ if (extension)
+ {
+ interfaceExtensions[extension->getExtensionTypeQName()] = extension;
+ }
+ LOGEXIT(1, "SCARuntime::registerInterfaceExtension");
+ }
+
+ // ======================================
+ // find an InterfaceExtension
+ // ======================================
+ InterfaceExtension* SCARuntime::getInterfaceExtension(const string& extensionTypeQName)
+ {
+ return interfaceExtensions[extensionTypeQName];
+ }
+
+ // ======================================
+ // register an implementationExtension
+ // ======================================
+ void SCARuntime::registerImplementationExtension(ImplementationExtension* extension)
+ {
+ LOGENTRY(1, "SCARuntime::registerImplementationExtension");
+ if (extension)
+ {
+ implementationExtensions[extension->getExtensionTypeQName()] = extension;
+ }
+ LOGEXIT(1, "SCARuntime::registerImplementationExtension");
+ }
+
+ // ======================================
+ // find an implementationExtension
+ // ======================================
+ ImplementationExtension* SCARuntime::getImplementationExtension(const string& extensionTypeQName)
+ {
+ return implementationExtensions[extensionTypeQName];
+ }
+
+ // ======================================
+ // register a referenceBindingExtension
+ // ======================================
+ void SCARuntime::registerReferenceBindingExtension(ReferenceBindingExtension* extension)
+ {
+ LOGENTRY(1, "SCARuntime::registerReferenceBindingExtension");
+ if (extension)
+ {
+ referenceBindingExtensions[extension->getExtensionTypeQName()] = extension;
+ }
+ LOGEXIT(1, "SCARuntime::registerReferenceBindingExtension");
+ }
+
+ // ======================================
+ // find a referenceBindingExtension
+ // ======================================
+ ReferenceBindingExtension* SCARuntime::getReferenceBindingExtension(const string& extensionTypeQName)
+ {
+ return referenceBindingExtensions[extensionTypeQName];
+ }
+
+ // ======================================
+ // register a serviceBindingExtension
+ // ======================================
+ void SCARuntime::registerServiceBindingExtension(ServiceBindingExtension* extension)
+ {
+ LOGENTRY(1, "SCARuntime::registerServiceBindingExtension");
+ if (extension)
+ {
+ serviceBindingExtensions[extension->getExtensionTypeQName()] = extension;
+ }
+ LOGEXIT(1, "SCARuntime::registerServiceBindingExtension");
+ }
+
+ // ======================================
+ // find a serviceBindingExtension
+ // ======================================
+ ServiceBindingExtension* SCARuntime::getServiceBindingExtension(const string& extensionTypeQName)
+ {
+ return serviceBindingExtensions[extensionTypeQName];
+ }
+
+
+ // ===================================
+ // Return the top of the runtime model
+ // ===================================
+ Composite* SCARuntime::getSystem()
+ {
+ if (!system)
+ {
+ system = new Composite("tuscany/sca/system", "");
+ load();
+ }
+ return system;
+ }
+
+
+ // ===================================================
+ // setCurrentComponent: push component for this thread
+ // ===================================================
+ void SCARuntime::setCurrentComponent(Component* component)
+ {
+
+#if defined(WIN32) || defined (_WINDOWS)
+ DWORD currentThreadId = GetCurrentThreadId();
+#else
+ pthread_t currentThreadId = pthread_self();
+#endif
+ COMPONENTS_MAP::iterator iter = components.find(currentThreadId);
+ if (iter == components.end())
+ {
+ components[currentThreadId] = COMPONENT_STACK();
+ iter = components.find(currentThreadId);
+ }
+
+ COMPONENT_STACK& compStack = iter->second;
+ compStack.push(component);
+ }
+
+
+ // ====================================================
+ // unsetCurrentComponent: pop component for this thread
+ // ====================================================
+ Component* SCARuntime::unsetCurrentComponent()
+ {
+#if defined(WIN32) || defined (_WINDOWS)
+ DWORD currentThreadId = GetCurrentThreadId();
+#else
+ pthread_t currentThreadId = pthread_self();
+#endif
+
+ COMPONENTS_MAP::iterator iter = components.find(currentThreadId);
+ if (iter != components.end())
+ {
+ COMPONENT_STACK& compStack = iter->second;
+ if (compStack.size() > 0)
+ {
+ Component* component = compStack.top();
+ compStack.pop();
+ return component;
+ }
+ }
+
+ return 0;
+ }
+
+ // =============================================================
+ // getCurrentComponent: return current component for this thread
+ // =============================================================
+ Component* SCARuntime::getCurrentComponent()
+ {
+#if defined(WIN32) || defined (_WINDOWS)
+ DWORD currentThreadId = GetCurrentThreadId();
+#else
+ pthread_t currentThreadId = pthread_self();
+#endif
+
+ COMPONENTS_MAP::iterator iter = components.find(currentThreadId);
+ if (iter == components.end())
+ {
+ components[currentThreadId] = COMPONENT_STACK();
+ iter = components.find(currentThreadId);
+ }
+
+ COMPONENT_STACK& compStack = iter->second;
+ if (compStack.size() > 0)
+ {
+ return compStack.top();
+ }
+ else
+ {
+ return 0;
+ }
+
+ }
+
+ // ===========================================
+ // getCurrentCompositeComponent: return the current composite component
+ // ===========================================
+ Component* SCARuntime::getDefaultComponent()
+ {
+
+ // ----------------------
+ // Get the default Component
+ // ----------------------
+ if (!defaultComponent)
+ {
+ // -------------------------------------------
+ // Get the default component name from the environment
+ // -------------------------------------------
+ if (defaultComponentName == "")
+ {
+ const char* defComp = getenv(TUSCANY_SCACPP_COMPONENT);
+ if (!defComp)
+ {
+ defComp = getenv(TUSCANY_SCACPP_DEFAULT_COMPONENT);
+ }
+ if (!defComp)
+ {
+ string message = TUSCANY_SCACPP_COMPONENT;
+ message += " environment variable not set";
+ throw SystemConfigurationException(message.c_str());
+ }
+ defaultComponentName = defComp;
+ }
+
+ defaultComponent = getSystem()->findComponent(defaultComponentName);
+ if (!defaultComponent)
+ {
+ string message = "Component \'" + defaultComponentName + "\' not found";
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+ return defaultComponent;
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.h
new file mode 100644
index 0000000000..ef78296480
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/SCARuntime.h
@@ -0,0 +1,262 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_core_scaruntime_h
+#define tuscany_sca_core_scaruntime_h
+
+#include "tuscany/sca/export.h"
+
+#include "tuscany/sca/extension/InterfaceExtension.h"
+#include "tuscany/sca/extension/ImplementationExtension.h"
+#include "tuscany/sca/extension/ReferenceBindingExtension.h"
+#include "tuscany/sca/extension/ServiceBindingExtension.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/util/Library.h"
+
+#if defined(WIN32) || defined (_WINDOWS)
+#include <windows.h>
+#else
+#include <pthread.h>
+#endif
+
+#include <stack>
+#include <string>
+#include <map>
+#include <list>
+using namespace std;
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ /**
+ * A singleton which represents the executing SCA runtime.
+ */
+ class SCARuntime {
+ public:
+
+ /**
+ * Get the single instance.
+ * @return The single instance of the runtime.
+ */
+ SCA_API static SCARuntime* getInstance();
+
+ /**
+ * Release the single instance.
+ */
+ SCA_API static void releaseInstance();
+
+ /**
+ * Load the SCA configuration from the scdl files (sca.composite,
+ * *.fragment, etc).
+ * This will create the runtime model from which the SCA runtime
+ * will operate.
+ */
+ SCA_API void load();
+
+ /**
+ * Set the system root
+ * @param root The path to the system configuration.
+ */
+ static void setSystemRoot(const string& root);
+
+ /**
+ * Set the search path for composites.
+ * @param path The search path for composites.
+ */
+ static void setSystemPath(const string& path);
+
+ /**
+ * Set the default Component for the system
+ * @param componentName The name of the default component.
+ */
+ static void setDefaultComponentName(const string& componentName);
+
+ /**
+ * Set the current component for the current thread.
+ * @param component The current component.
+ */
+ SCA_API void setCurrentComponent(Component* component);
+
+ /**
+ * Remove the current component from this thread, and return
+ * to the previous component (if there was one).
+ * @return The previous component.
+ */
+ SCA_API Component* unsetCurrentComponent();
+
+ /**
+ * Get a pointer to the configured SCA system which this
+ * SCA runtime represents.
+ * The rest of the SCA configuration can be navigated from
+ * the System.
+ * @return The configured SCA system.
+ */
+ SCA_API Composite* getSystem();
+
+ /**
+ * The directory in which the Tuscany runtime has been installed.
+ */
+ SCA_API const string& getInstallRoot() {return SCARoot;}
+
+ /**
+ * Return the current component for this thread.
+ * @return The current component for this thread.
+ */
+ SCA_API Component* getCurrentComponent();
+
+ /**
+ * Get the default component set for this runtime.
+ * @return The default composite.
+ */
+ SCA_API Component* getDefaultComponent();
+
+ /**
+ * Register an implementation extension
+ */
+ SCA_API void registerImplementationExtension(ImplementationExtension* extension);
+
+ /**
+ * Returns the implementation extension associated with
+ * the specified qname
+ */
+ SCA_API ImplementationExtension* getImplementationExtension(const string& typeQname);
+
+ /**
+ * Register a reference binding extension
+ */
+ SCA_API void registerReferenceBindingExtension(ReferenceBindingExtension* extension);
+
+ /**
+ * Returns the reference binding extension associated with
+ * the specified qname
+ */
+ SCA_API ReferenceBindingExtension* getReferenceBindingExtension(const string& typeQname);
+
+ /**
+ * Register a service binding extension
+ */
+ SCA_API void registerServiceBindingExtension(ServiceBindingExtension* extension);
+
+ /**
+ * Returns the service binding extension associated with
+ * the specified qname
+ */
+ SCA_API ServiceBindingExtension* getServiceBindingExtension(const string& typeQname);
+
+ /**
+ * Register an interface extension
+ */
+ SCA_API void registerInterfaceExtension(InterfaceExtension* extension);
+
+ /**
+ * Returns the interface extension associated with
+ * the specified qname
+ */
+ SCA_API InterfaceExtension* getInterfaceExtension(const string& typeQname);
+
+ private:
+ /**
+ * Default constructor is private to prevent more than one instance.
+ */
+ SCARuntime();
+
+ virtual ~SCARuntime();
+
+ /**
+ * The single instance of this class.
+ */
+ static SCARuntime* instance;
+
+ /**
+ * Pointer to the top of the runtime model.
+ */
+ Composite* system;
+
+ /**
+ * The installed path of the Tuscany runtime.
+ */
+ string SCARoot;
+
+ /**
+ * The path to the system configuration
+ */
+ static string systemRoot;
+
+ /**
+ * The search path for composites.
+ */
+ static string systemPath;
+
+ /**
+ * The default CompositeComponent.
+ */
+ static string defaultComponentName;
+
+ /**
+ * The default component set for this runtime.
+ */
+ Component* defaultComponent;
+
+
+ typedef stack<Component*> COMPONENT_STACK;
+#if defined(WIN32) || defined (_WINDOWS)
+ typedef map<DWORD, COMPONENT_STACK> COMPONENTS_MAP;
+#else
+ typedef map<pthread_t, COMPONENT_STACK> COMPONENTS_MAP;
+#endif
+
+ /**
+ * A map of threads to components.
+ */
+ COMPONENTS_MAP components;
+
+ typedef map<string, ImplementationExtension*> IMPLEMENTATION_EXTENSIONS_MAP;
+ IMPLEMENTATION_EXTENSIONS_MAP implementationExtensions;
+
+ typedef map<string, ReferenceBindingExtension*> REFERENCE_BINDING_EXTENSIONS_MAP;
+ REFERENCE_BINDING_EXTENSIONS_MAP referenceBindingExtensions;
+
+ typedef map<string, ServiceBindingExtension*> SERVICE_BINDING_EXTENSIONS_MAP;
+ SERVICE_BINDING_EXTENSIONS_MAP serviceBindingExtensions;
+
+ typedef map<string, InterfaceExtension*> INTERFACE_EXTENSIONS_MAP;
+ INTERFACE_EXTENSIONS_MAP interfaceExtensions;
+
+ // Runtime Extensions
+ void loadExtensions();
+
+ typedef list<Library> EXTENSIONS_LIST;
+ EXTENSIONS_LIST extensionsList;
+
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+
+typedef void (* TUSCANY_IMPLEMENTATION_EXTENSION_INITIALIZE) ();
+
+#endif // tuscany_sca_core_scaruntime_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.cpp
new file mode 100644
index 0000000000..f835b53267
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.cpp
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ // ============================
+ // Constructor: Create a proxy
+ // ============================
+ ServiceProxy::ServiceProxy(Reference* reference)
+ : reference(reference)
+ {
+ LOGENTRY(1,"ServiceProxy::constructor");
+ LOGEXIT(1,"ServiceProxy::constructor");
+
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ ServiceProxy::~ServiceProxy()
+ {
+ LOGENTRY(1,"ServiceProxy::destructor");
+ LOGEXIT(1,"ServiceProxy::destructor");
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.h
new file mode 100644
index 0000000000..69af373062
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.h
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_core_serviceproxy_h
+#define tuscany_sca_core_serviceproxy_h
+
+#include "tuscany/sca/export.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+#include <vector>
+using std::vector;
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ /**
+ * Holds a proxy for a given component and reference.
+ * The proxy which is held inside a ServiceProxy will be specific to the component
+ * and reference and will have been code generated and be contained in a dll
+ * created by a developer of an SCA application.
+ */
+ class SCA_API ServiceProxy
+ {
+ public:
+ /**
+ * Create a new service proxy for a reference. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The reference on the source component.
+ * @param target The wrapper of the service which is wired to this reference.
+ */
+ ServiceProxy(Reference* reference);
+
+ /**
+ * Destructor.
+ */
+ virtual ~ServiceProxy();
+
+ /**
+ * Returns the reference represented by this proxy.
+ * @return The Reference represented by this proxy.
+ */
+ Reference* getReference() const { return reference; };
+
+ private:
+
+ /**
+ * The reference represented by this proxy.
+ */
+ Reference* reference;
+
+ };
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_core_serviceproxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.cpp
new file mode 100644
index 0000000000..51ee4f02b7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.cpp
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/util/Logging.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ // ===========
+ // Constructor
+ // ===========
+ ServiceWrapper::ServiceWrapper(Service* service)
+ : service(service)
+ {
+ LOGENTRY(1,"ServiceWrapper::constructor");
+
+ LOGEXIT(1,"ServiceWrapper::constructor");
+
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ ServiceWrapper::~ServiceWrapper()
+ {
+ LOGENTRY(1,"ServiceWrapper::destructor");
+ LOGEXIT(1,"ServiceWrapper::destructor");
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.h
new file mode 100644
index 0000000000..816e1d06f4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.h
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_core_servicewrapper_h
+#define tuscany_sca_core_servicewrapper_h
+
+#include "tuscany/sca/export.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Service.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ /**
+ * An abstract class that wraps a component implementation or an external
+ * service.
+ */
+ class SCA_API ServiceWrapper
+ {
+ public:
+ /**
+ * Constructor.
+ * @param target The service wrapper wraps the target of a wire.
+ */
+ ServiceWrapper(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~ServiceWrapper();
+
+ /**
+ * Get the service represented by this wrapper.
+ * @return The service represented by this wrapper.
+ */
+ Service* getService() const { return service; }
+
+ /**
+ * All business method calls on the target service are performed through
+ * this invoke method.
+ * @param operation The details of the method, paramaters and return value for the
+ * business method to be called on the target service.
+ */
+ virtual void invoke(Operation& operation) = 0;
+
+ private:
+ /**
+ * The target represented by this wrapper.
+ */
+ Service* service;
+
+ };
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_core_servicewrapper_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.cpp
new file mode 100644
index 0000000000..5e6cd4a197
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.cpp
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/core/TuscanyRuntime.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/core/SCARuntime.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ // ==========================================================
+ // Set the system configuration root path
+ // ==========================================================
+ void TuscanyRuntime::setSystemRoot(const string& root)
+ {
+ LOGENTRY(1, "TuscanyRuntime::setSystemRoot");
+ systemRoot = root;
+ LOGINFO_1(3, "TuscanyRuntime::setSystemRoot - set to %s", root.c_str());
+ LOGEXIT(1, "TuscanyRuntime::setSystemRoot");
+ }
+
+ // ==========================================================
+ // Set the search path for composites
+ // ==========================================================
+ void TuscanyRuntime::setSystemPath(const string& path)
+ {
+ LOGENTRY(1, "TuscanyRuntime::setSystemPath");
+ systemPath = path;
+ LOGINFO_1(3, "TuscanyRuntime::setSystemPath - set to %s", path.c_str());
+ LOGEXIT(1, "TuscanyRuntime::setSystemPath");
+ }
+
+ // ==========================================================
+ // Set the default component name
+ // ==========================================================
+ void TuscanyRuntime::setDefaultComponentName(const string& componentName)
+ {
+ LOGENTRY(1, "TuscanyRuntime::setDefaultComponentName");
+ defaultComponentName = componentName;
+ LOGINFO_1(3, "TuscanyRuntime::setDefaultComponentName - set to %s", componentName.c_str());
+ LOGEXIT(1, "TuscanyRuntime::setDefaultComponentName");
+ }
+
+ // ===================================================================
+ // Constructor for the TuscanyRuntime class.
+ // ===================================================================
+ TuscanyRuntime::TuscanyRuntime(const string& componentName, const string& root, const string& path)
+ {
+ LOGENTRY(1, "TuscanyRuntime::constructor");
+ setSystemRoot(root);
+ setSystemPath(path);
+ setDefaultComponentName(componentName);
+ LOGEXIT(1, "TuscanyRuntime::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the TuscanyRuntime class.
+ // ===================================================================
+ TuscanyRuntime::~TuscanyRuntime()
+ {
+ LOGENTRY(1, "TuscanyRuntime::destructor");;
+ LOGEXIT(1, "TuscanyRuntime::destructor");
+ }
+
+ // ===================================================================
+ // Start the runtime.
+ // ===================================================================
+ void TuscanyRuntime::start()
+ {
+ LOGENTRY(1, "TuscanyRuntime::start");
+ SCARuntime::setSystemRoot(systemRoot);
+ SCARuntime::setSystemPath(systemPath);
+ SCARuntime::setDefaultComponentName(defaultComponentName);
+ SCARuntime::getInstance();
+ LOGEXIT(1, "TuscanyRuntime::start");
+ }
+
+ // ===================================================================
+ // Stop the runtime.
+ // ===================================================================
+ void TuscanyRuntime::stop()
+ {
+ LOGENTRY(1, "TuscanyRuntime::stop");
+ SCARuntime::releaseInstance();
+ LOGEXIT(1, "TuscanyRuntime::stop");
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.h
new file mode 100644
index 0000000000..f1ac59f357
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.h
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_core_tuscanyruntime_h
+#define tuscany_sca_core_tuscanyruntime_h
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ /**
+ * A singleton which represents the executing SCA runtime.
+ */
+ class SCA_API TuscanyRuntime
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ TuscanyRuntime(const string& defaultComponentName = "",
+ const string& root = "", const string& path = "");
+
+ /**
+ * Destructor
+ */
+ virtual ~TuscanyRuntime();
+
+
+ /**
+ * Set the system root configuration path
+ * @param root The path to the system configuration.
+ */
+ void setSystemRoot(const string& root);
+
+ /**
+ * Set the system composite search path
+ * @param root The search path for composites.
+ */
+ void setSystemPath(const string& path);
+
+ /**
+ * Set the default component for the system
+ * @param componentName The name of the default component.
+ */
+ void setDefaultComponentName(const string& componentName);
+
+ /**
+ * start the runtime
+ */
+ void start();
+
+ /**
+ * stop the runtime
+ */
+ void stop();
+
+
+ private:
+ string systemRoot;
+ string systemPath;
+ string defaultComponentName;
+ };
+
+
+ } // End namespace sca
+} // End namespace tuscany
+
+
+
+
+#endif // tuscany_sca_core_tuscanyruntime_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/export.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/export.h
new file mode 100644
index 0000000000..79b02fe4cf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/export.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_export_h
+#define tuscany_sca_export_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+
+#ifdef SCA_EXPORTS
+#define SCA_API __declspec(dllexport)
+#else
+#define SCA_API __declspec(dllimport)
+#endif
+
+#else
+#include <sys/time.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#define SCA_API
+#endif
+
+#endif // tuscany_sca_export_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.cpp
new file mode 100644
index 0000000000..21eab40c72
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.cpp
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/extension/ImplementationExtension.h"
+#include "tuscany/sca/util/Logging.h"
+namespace tuscany
+{
+ namespace sca
+ {
+ // ===================================================================
+ // Constructor for the ImplementationExtension class.
+ // ===================================================================
+ ImplementationExtension::ImplementationExtension()
+ {
+ LOGENTRY(1, "ImplementationExtension::constructor");
+ LOGEXIT(1, "ImplementationExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the ImplementationExtension class.
+ // ===================================================================
+ ImplementationExtension::~ImplementationExtension()
+ {
+ LOGENTRY(1, "ImplementationExtension::destructor");;
+ LOGEXIT(1, "ImplementationExtension::destructor");
+ }
+
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.h
new file mode 100644
index 0000000000..4744a5b14c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.h
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_implementationextension_h
+#define tuscany_sca_extension_implementationextension_h
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+
+#include "commonj/sdo/SDO.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ class SCA_API ImplementationExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ ImplementationExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~ImplementationExtension();
+
+ /**
+ * return the name of the extension (e.g. "cpp" "php")
+ */
+ virtual const string& getExtensionName() = 0;
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#implementation.cpp")
+ */
+ virtual const string& getExtensionTypeQName() = 0;
+
+ /**
+ * Get an implementation from a DataObject representing
+ * an SCDL implementation element
+ */
+ virtual ComponentType* getImplementation(Composite* composite, commonj::sdo::DataObjectPtr scdlImplementation) = 0;
+
+ };
+
+
+ } // End namespace sca
+} // End namespace tuscany
+
+
+#endif // tuscany_sca_extension_implementationextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.cpp
new file mode 100644
index 0000000000..f0cb0b1b2d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.cpp
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/extension/InterfaceExtension.h"
+#include "tuscany/sca/util/Logging.h"
+namespace tuscany
+{
+ namespace sca
+ {
+ // ===================================================================
+ // Constructor for the InterfaceExtension class.
+ // ===================================================================
+ InterfaceExtension::InterfaceExtension()
+ {
+ LOGENTRY(1, "InterfaceExtension::constructor");
+ LOGEXIT(1, "InterfaceExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the InterfaceExtension class.
+ // ===================================================================
+ InterfaceExtension::~InterfaceExtension()
+ {
+ LOGENTRY(1, "InterfaceExtension::destructor");;
+ LOGEXIT(1, "InterfaceExtension::destructor");
+ }
+
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.h
new file mode 100644
index 0000000000..545eb92caa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.h
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_interfaceextension_h
+#define tuscany_sca_extension_interfaceextension_h
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/model/Composite.h"
+#include "commonj/sdo/SDO.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ class SCA_API InterfaceExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ InterfaceExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~InterfaceExtension();
+
+ /**
+ * return the name of the extension (e.g. "cpp" "php")
+ */
+ virtual const string& getExtensionName() = 0;
+
+ /**
+ * return the QName of schema elemant for this interface extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#interface.cpp")
+ */
+ virtual const string& getExtensionTypeQName() = 0;
+
+ /**
+ * Get an interface from a DataObject representing an
+ * SCDL interface
+ */
+ virtual Interface* getInterface(Composite *composite, commonj::sdo::DataObjectPtr scdlInterface) = 0;
+
+ };
+
+
+ } // End namespace sca
+} // End namespace tuscany
+
+
+#endif // tuscany_sca_extension_interfaceextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.cpp
new file mode 100644
index 0000000000..9797cb33a9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/extension/ReferenceBindingExtension.h"
+#include "tuscany/sca/util/Logging.h"
+namespace tuscany
+{
+ namespace sca
+ {
+ // ===================================================================
+ // Constructor for the ReferenceBindingExtension class.
+ // ===================================================================
+ ReferenceBindingExtension::ReferenceBindingExtension()
+ {
+ LOGENTRY(1, "ReferenceBindingExtension::constructor");
+ LOGEXIT(1, "ReferenceBindingExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the ReferenceBindingExtension class.
+ // ===================================================================
+ ReferenceBindingExtension::~ReferenceBindingExtension()
+ {
+ LOGENTRY(1, "ReferenceBindingExtension::destructor");;
+ LOGEXIT(1, "ReferenceBindingExtension::destructor");
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.h
new file mode 100644
index 0000000000..1af89e6c5a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.h
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_referencebindingextension_h
+#define tuscany_sca_extension_referencebindingextension_h
+
+#include "tuscany/sca/export.h"
+
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+#include "commonj/sdo/SDO.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ class SCA_API ReferenceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ ReferenceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~ReferenceBindingExtension();
+
+ /**
+ * return the name of the extension (e.g. "cpp" "php")
+ */
+ virtual const string& getExtensionName() = 0;
+
+ /**
+ * return the QName of schema elemant for this binding extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const string& getExtensionTypeQName() = 0;
+
+ /**
+ * Get a reference binding from a DataObject representing
+ * an SCDL binding element
+ */
+ virtual ReferenceBinding* getReferenceBinding(Composite* composite, Reference* reference, commonj::sdo::DataObjectPtr scdlBinding) = 0;
+
+ };
+
+
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_referencebindingextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.cpp
new file mode 100644
index 0000000000..9ffb4d10d1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/extension/ServiceBindingExtension.h"
+#include "tuscany/sca/util/Logging.h"
+namespace tuscany
+{
+ namespace sca
+ {
+ // ===================================================================
+ // Constructor for the ServiceBindingExtension class.
+ // ===================================================================
+ ServiceBindingExtension::ServiceBindingExtension()
+ {
+ LOGENTRY(1, "ServiceBindingExtension::constructor");
+ LOGEXIT(1, "ServiceBindingExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the ServiceBindingExtension class.
+ // ===================================================================
+ ServiceBindingExtension::~ServiceBindingExtension()
+ {
+ LOGENTRY(1, "ServiceBindingExtension::destructor");;
+ LOGEXIT(1, "ServiceBindingExtension::destructor");
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.h
new file mode 100644
index 0000000000..9d65a7441a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.h
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_servicebindingextension_h
+#define tuscany_sca_extension_servicebindingextension_h
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+
+#include "commonj/sdo/SDO.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ class SCA_API ServiceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ ServiceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~ServiceBindingExtension();
+
+ /**
+ * return the name of the extension (e.g. "cpp" "php")
+ */
+ virtual const string& getExtensionName() = 0;
+
+ /**
+ * return the QName of schema elemant for this binding extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const string& getExtensionTypeQName() = 0;
+
+ /**
+ * Get a reference binding from a DataObject representing
+ * an SCDL binding element
+ */
+ virtual ServiceBinding* getServiceBinding(Composite* composite, Service* service, commonj::sdo::DataObjectPtr scdlBinding) = 0;
+
+ };
+
+
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_servicebindingextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.cpp
new file mode 100644
index 0000000000..af7aa2ff6f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.cpp
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/Binding.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ Binding::Binding(const string& uri) : uri(uri)
+ {
+ }
+
+ // Destructor
+ Binding::~Binding()
+ {
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.h
new file mode 100644
index 0000000000..b68529020d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Binding.h
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_binding_h
+#define tuscany_sca_model_binding_h
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ /**
+ * Represents a binding.
+ * Bindings are used by services and references. References use bindings
+ * to describe the access mechanism used to call an external service (which can
+ * be a service provided by another SCA composite). Services use bindings to describe
+ * the access mechanism that clients (which can be a client from another SCA composite)
+ * have to use to call the service.
+ * This interface will typically be extended by binding implementations to allow
+ * specification of binding/transport specific information.
+ */
+ class Binding
+ {
+
+ public:
+
+ /**
+ * Constructor to create a new binding.
+ * @param uri The binding URI.
+ */
+ SCA_API Binding(const string& uri);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Binding();
+
+ /**
+ * Returns the binding type
+ * @return The binding type.
+ */
+ SCA_API virtual string getType() = 0;
+
+ /**
+ * Returns the binding URI.
+ * @return The binding URI.
+ */
+ SCA_API const string& getURI() const { return uri; };
+
+ private:
+
+ /**
+ * The binding URI.
+ */
+ string uri;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_binding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.cpp
new file mode 100644
index 0000000000..905d8c3555
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.cpp
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/ComponentType.h"
+
+using namespace commonj::sdo;
+#include <iostream>
+using namespace std;
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ // Constructor
+ Component::Component(Composite* composite, const std::string& componentName, ComponentType *componentType)
+ : name(componentName), composite(composite), type(componentType)
+ {
+ LOGENTRY(1, "Component::constructor");
+ LOGINFO_1(3, "Component::constructor: Component name: %s", name.c_str());
+
+ // Initialize the component from its component type
+ componentType->initializeComponent(this);
+
+ LOGEXIT(1, "Component::constructor");
+ }
+
+ Component::~Component()
+ {
+ }
+
+ void Component::addService(Service* service)
+ {
+ services[service->getType()->getName()] = service;
+ }
+
+ Service* Component::findService(const string& serviceName)
+ {
+ // If serviceName is empty then return the ONLY service
+ if (serviceName == ""
+ && services.size() == 1)
+ {
+ return services.begin()->second;
+ }
+ else
+ {
+ Service* service = services[serviceName];
+ if (service == NULL)
+ {
+ // A service with an empty name will match any service name
+ service = services[""];
+ }
+ return service;
+ }
+ }
+
+ void Component::addReference(Reference* reference)
+ {
+ references[reference->getType()->getName()] = reference;
+ }
+
+ Reference* Component::findReference(const std::string& referenceName)
+ {
+ return references[referenceName];
+ }
+
+ DataObjectPtr Component::getProperties()
+ {
+ if (!properties)
+ {
+ properties = type->getPropertyDataFactory()->create("org/osoa/sca", "Properties");
+ }
+ return properties;
+ }
+
+ void Component::setProperty(const string& name, DataObjectPtr value)
+ {
+ //cout << "setting property: " << name.c_str() << " to: " << value <<endl;
+ DataObjectPtr props = getProperties();
+
+ // Get the property's type
+ try
+ {
+ const Property& propProperty = props->getProperty(name);
+ const Type& propType = propProperty.getType();
+ if (propType.isDataType())
+ {
+ if (propProperty.isMany())
+ {
+ DataObjectList& dol = props->getList(propProperty);
+ dol.append(value->getCString(""));
+ }
+ else
+ {
+ props->setCString(propProperty, value->getCString(""));
+ }
+ }
+ else
+ {
+ // Create a new instance of the DO
+ // iterate over properties setting each one
+
+ // for now:
+ props->setDataObject(propProperty, value);
+ }
+ }
+ catch (SDOPropertyNotFoundException&)
+ {
+ // Configuration error: property is not defined
+ string message = "Undefined property: " + name;
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ //cout << "properties set: " << props << endl;
+
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.h
new file mode 100644
index 0000000000..dc34b03a57
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Component.h
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_component_h
+#define tuscany_sca_model_component_h
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+#include <map>
+
+#include "commonj/sdo/SDO.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ class Composite;
+ class ComponentType;
+ class Reference;
+ class ReferenceType;
+ class Service;
+ class ServiceType;
+
+ /**
+ * A component is a configured instance of an implementation. Components provide
+ * and consume services. More than one component can use and configure the same
+ * implementation, where each component configures the implementation differently.
+ * For example each component may configure a reference of the same implementation
+ * to consume a different service.
+ */
+ class Component
+ {
+ public:
+
+ /**
+ * Constructor
+ * @param composite The composite containing the component.
+ * @param name The name of the component.
+ */
+ SCA_API Component(Composite *composite, const std::string& name, ComponentType *type);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Component();
+
+ /**
+ * Returns the name of this component.
+ * @return the name of this component
+ */
+ SCA_API const string& getName() const { return name; }
+
+ /**
+ * Returns the composite containing this component.
+ * @return The composite containing this component.
+ */
+ SCA_API Composite* getComposite() const { return composite; }
+
+ /**
+ * Returns the type of this component.
+ * @return The type of this component.
+ */
+ SCA_API ComponentType* getType() const { return type; }
+
+ /**
+ * Add a new service to this component.
+ * @param service The service to add.
+ */
+ SCA_API void addService(Service* service);
+
+ /**
+ * Find an existing service on this component.
+ * @param serviceName The name of the service to find.
+ * If the serviceName is the zero length string then if there is
+ * only one service it will be returned.
+ * @return The found service, or 0 if not found.
+ */
+ SCA_API Service* findService(const string& serviceName);
+
+ /**
+ * Add a new reference to this component.
+ * @param reference The reference to add.
+ */
+ SCA_API void addReference(Reference* reference);
+
+ /**
+ * Find an existing reference on this component.
+ * @param referenceName The name of the reference to find.
+ * @return The found reference, or 0 if not found.
+ */
+ SCA_API Reference* findReference(const string& referenceName);
+
+ /**
+ * Returns all the services defined on this component.
+ * @return All the services defined on this component.
+ */
+ typedef std::map<std::string, Service*> SERVICE_MAP;
+ SCA_API const SERVICE_MAP& getServices() const { return services; };
+
+ /**
+ * Returns all the references defined on this component.
+ * @return All the references defined on this component.
+ */
+ typedef std::map<std::string, Reference*> REFERENCE_MAP;
+ SCA_API const REFERENCE_MAP& getReferences() const { return references; };
+
+ /**
+ * Set the value of a property defined on this component. The values
+ * will usually come from a component declaration in a composite file.
+ * @param name The name of the property.
+ * @param value The value of the property.
+ */
+ SCA_API void setProperty(const string& name, commonj::sdo::DataObjectPtr value);
+
+ /**
+ * Returns a data object from which all the properties of the component
+ * and their values can be accessed.
+ * @return A data object holding the property values.
+ */
+ SCA_API DataObjectPtr getProperties();
+
+ private:
+
+ /**
+ * Name of the component.
+ */
+ string name;
+
+ /**
+ * Composite containing the component.
+ */
+ Composite* composite;
+
+ /**
+ * Type of the component.
+ */
+ ComponentType* type;
+
+ /**
+ * Map of all the services defined on this component.
+ */
+ SERVICE_MAP services;
+
+ /**
+ * Map of all the references defined on this component.
+ */
+ REFERENCE_MAP references;
+
+ /**
+ * The properties and their values for this component.
+ */
+ commonj::sdo::DataObjectPtr properties;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_component_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.cpp
new file mode 100644
index 0000000000..a69364d7c4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.cpp
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+
+#include <iostream>
+
+using namespace commonj::sdo;
+using namespace std;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ // Constructor
+ ComponentType::ComponentType(Composite* composite, const string& name)
+ : composite(composite), name(name)
+ {
+ LOGENTRY(1, "ComponentType::constructor");
+ LOGEXIT(1, "ComponentType::constructor");
+ }
+
+ // Destructor
+ ComponentType::~ComponentType()
+ {
+ }
+
+ void ComponentType::addServiceType(ServiceType* serviceType)
+ {
+ serviceTypes[serviceType->getName()] = serviceType;
+ }
+
+ ServiceType* ComponentType::findServiceType(const string& serviceName)
+ {
+ // If serviceName is empty then return the ONLY service
+ if (serviceName == ""
+ && serviceTypes.size() == 1)
+ {
+ return serviceTypes.begin()->second;
+ }
+ else
+ {
+ return serviceTypes[serviceName];
+ }
+ }
+
+ void ComponentType::addReferenceType(ReferenceType* referenceType)
+ {
+ referenceTypes[referenceType->getName()] = referenceType;
+ }
+
+ ReferenceType* ComponentType::findReferenceType(const string& referenceName)
+ {
+ return referenceTypes[referenceName];
+ }
+
+ void ComponentType::addPropertyType(const string& name,
+ const string& type,
+ bool many,
+ DataObjectPtr* defaultValue)
+ {
+ // Create a Type in the Properties dataFactory
+ DataFactoryPtr factory = getPropertyDataFactory();
+
+ string typeUri, typeName;
+ Utils::tokeniseQName(type, typeUri, typeName);
+
+ if (typeUri == "http://www.w3.org/2001/XMLSchema")
+ {
+ typeUri = Type::SDOTypeNamespaceURI;
+ if (typeName == "string")
+ {
+ typeName = "String";
+ }
+ else if (typeName == "anyType")
+ {
+ typeName = "DataObject";
+ }
+ else if (typeName == "int")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "integer")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "negativeInteger")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "nonNegativeInteger")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "positiveInteger")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "nonPositiveInteger")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "unsignedLong")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "unsignedShort")
+ {
+ typeName = "Integer";
+ }
+ else if (typeName == "unsignedInt")
+ {
+ typeName = "Long";
+ }
+ else if (typeName == "long")
+ {
+ typeName = "Long";
+ }
+ else if (typeName == "double")
+ {
+ typeName = "Double";
+ }
+ else if (typeName == "short")
+ {
+ typeName = "Short";
+ }
+ else if (typeName == "unsignedByte")
+ {
+ typeName = "Short";
+ }
+ else if (typeName == "float")
+ {
+ typeName = "Float";
+ }
+ else if (typeName == "boolean")
+ {
+ typeName = "Boolean";
+ }
+ else if (typeName == "byte")
+ {
+ typeName = "Byte";
+ }
+ else if (typeName == "base64Binary")
+ {
+ typeName = "Bytes";
+ }
+ else if (typeName == "hexBinary")
+ {
+ typeName = "Bytes";
+ }
+ else if (typeName == "anyURI")
+ {
+ typeName = "URI";
+ }
+ else if (typeName == "QName")
+ {
+ typeName = "URI";
+ }
+ else
+ {
+ // Default unknown xs: types to string??
+ typeName = "String";
+ }
+ }
+ else
+ {
+ // It's not an XML type
+ }
+
+ factory->addPropertyToType(
+ "org/osoa/sca",
+ "Properties",
+ name.c_str(),
+ typeUri.c_str(),
+ typeName.c_str(),
+ many,
+ false,
+ true);
+
+ // Set the default for a dataType
+ if (defaultValue!=NULL)
+ {
+ try
+ {
+ const Type& propType = factory->getType(typeUri.c_str(), typeName.c_str());
+ if (propType.isDataType())
+ {
+ factory->setDefault("org/osoa/sca", "Properties",
+ name.c_str(),
+ (char*)(*defaultValue)->getCString(""));
+ }
+ }
+ catch (SDOTypeNotFoundException&)
+ {
+ // cout << "setting default failed" <<endl;
+ }
+ }
+ }
+
+ DataFactoryPtr ComponentType::getPropertyDataFactory()
+ {
+ if (!propertyFactory)
+ {
+ propertyFactory = DataFactory::getDataFactory();
+ // Add the root type
+ propertyFactory->addType("org/osoa/sca", "Properties", false, false, false, false);
+ }
+ return propertyFactory;
+ }
+
+ void ComponentType::initializeComponent(Component* component)
+ {
+ for (SERVICETYPE_MAP::iterator iter = serviceTypes.begin();
+ iter != serviceTypes.end();
+ iter++)
+ {
+ Service* service = new Service(component, iter->second);
+ component->addService(service);
+ }
+ for (REFERENCETYPE_MAP::iterator refiter = referenceTypes.begin();
+ refiter != referenceTypes.end();
+ refiter++)
+ {
+ Reference* reference = new Reference(component, refiter->second);
+ component->addReference(reference);
+ }
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.h
new file mode 100644
index 0000000000..18e78ffedf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ComponentType.h
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_componenttype_h
+#define tuscany_sca_model_componenttype_h
+
+#include <string>
+using std::string;
+
+#include <map>
+
+#include "commonj/sdo/SDO.h"
+
+#include "tuscany/sca/model/ReferenceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ class ServiceType;
+ class ReferenceType;
+ class Interface;
+ class Component;
+ class Composite;
+
+ /**
+ * Component type represents the configurable aspects of an implementation.
+ * A component type consists of services that are offered, references to other services
+ * that can be wired and properties that can be set. The settable properties and the settable
+ * references to services are configured by a component which uses the implementation.
+ * The component type can be thought of as the contract which is honoured by an implementation.
+ */
+ class ComponentType
+ {
+ public:
+
+ /**
+ * Constructor
+ */
+ SCA_API ComponentType(Composite* composite, const string& name);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~ComponentType();
+
+ /**
+ * Returns the name of the component type
+ */
+ SCA_API const string& getName() const { return name; };
+
+ /**
+ * Returns the composite containing this component type
+ */
+ SCA_API Composite* getComposite() const { return composite; };
+
+ /**
+ * Add a new service type to this component type.
+ * @param serviceType The service type to add.
+ */
+ SCA_API virtual void addServiceType(ServiceType* serviceType);
+
+ /**
+ * Find an existing service type on this component type.
+ * @param serviceName The name of the service type to find.
+ * If the serviceName is the zero length string then if there is
+ * only one service type it will be returned.
+ * @return The found service, or 0 if not found.
+ */
+ SCA_API virtual ServiceType* findServiceType(const string& serviceName);
+
+ /**
+ * Add a new reference type to this component type.
+ * @param referenceType The reference type to add.
+ */
+ SCA_API virtual void addReferenceType(ReferenceType* referenceType);
+
+ /**
+ * Find an existing reference type on this component type.
+ * @param referenceName The name of the reference type to find.
+ * @return The found reference type, or 0 if not found.
+ */
+ SCA_API virtual ReferenceType* findReferenceType(const string& referenceName);
+
+ /**
+ * Returns the service types defined on this component.
+ * @return The service types defined on this component.
+ */
+ typedef std::map<std::string, ServiceType*> SERVICETYPE_MAP;
+ SERVICETYPE_MAP getServiceTypes() const { return serviceTypes; };
+
+ /**
+ * Returns the reference types defined on this component.
+ * @return The reference types defined on this component.
+ */
+ typedef std::map<std::string, ReferenceType*> REFERENCETYPE_MAP;
+ REFERENCETYPE_MAP getReferenceTypes() const { return referenceTypes; };
+
+ /**
+ * Add a new property type to this component type. Property types are added
+ * one at a time. The property definitions usually come from a component type file.
+ * @param name The name of the property type.
+ * @param type The full name of the property data type (including uri and local name).
+ * @param many True if this is a many valued property.
+ * @param defaultValue The default value if the property does not have a
+ * value set.
+ */
+ SCA_API virtual void addPropertyType(const string& name,
+ const string& type,
+ bool many,
+ commonj::sdo::DataObjectPtr* defaultValue);
+
+ /**
+ * Return the SDO data factory which has the types of the properties defined
+ * in this component type.
+ * @return The data factory.
+ */
+ SCA_API virtual commonj::sdo::DataFactoryPtr getPropertyDataFactory();
+
+ /**
+ * Initialize a component of this type.
+ * @param component The component to initialize.
+ */
+ SCA_API virtual void initializeComponent(Component* component);
+
+ private:
+
+ /**
+ * The name of the component type
+ */
+ string name;
+
+ /**
+ * The composite containing this component type
+ */
+ Composite* composite;
+
+ /**
+ * Map of all the service types defined on this component.
+ */
+ SERVICETYPE_MAP serviceTypes;
+
+ /**
+ * Map of all the reference types defined on this component.
+ */
+ REFERENCETYPE_MAP referenceTypes;
+
+ /**
+ * SDO data factory which has all the types of the properties defined in
+ * this component type
+ */
+ commonj::sdo::DataFactoryPtr propertyFactory;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_componenttype_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.cpp
new file mode 100644
index 0000000000..7b7fbcbdda
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.cpp
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Wire.h"
+#include "tuscany/sca/model/WSDLDefinition.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ Composite::Composite(const string& name, const string& root)
+ : ComponentType(0, name), root(root)
+ {
+ LOGENTRY(1, "Composite::constructor");
+ LOGEXIT(1, "Composite::constructor");
+ }
+
+ // Destructor
+ Composite::~Composite()
+ {
+ }
+
+ void Composite::addComponent(Component* component)
+ {
+ LOGENTRY(1, "Composite::addComponent");
+ components[component->getName()] = component;
+ LOGEXIT(1, "Composite::addComponent");
+ }
+
+ Component* Composite::findComponent(const std::string& name)
+ {
+ LOGENTRY(1, "Composite::findComponent");
+ Component* component = components[name];
+ LOGEXIT(1, "Composite::findComponent");
+ return component;
+ }
+
+ Service* Composite::findComponentService(const std::string& name)
+ {
+ LOGENTRY(1, "Composite::findComponentService");
+
+ Service* service = 0;
+
+ string componentName;
+ string serviceName;
+ Utils::tokeniseUri(name, componentName, serviceName);
+
+ // Locate the component
+ Component* component = findComponent(componentName);
+ if (component)
+ {
+ // Locate the service
+ service = component->findService(serviceName);
+ }
+ LOGEXIT(1, "Composite::findComponentService");
+ return service;
+ }
+
+ void Composite::addWire(const std::string& source, const std::string& target)
+ {
+ LOGENTRY(1, "Composite::addWire");
+ Wire* wire=new Wire(source, target);
+ wires.push_back(wire);
+ LOGEXIT(1, "Composite::addWire");
+ }
+
+ void Composite::addInclude(Composite* composite)
+ {
+ LOGENTRY(1, "Composite::addInclude");
+ includes.push_back(composite);
+
+ for (COMPONENT_MAP::iterator iter = composite->components.begin();
+ iter != composite->components.end();
+ iter++)
+ {
+ components[iter->first] = iter->second;
+ }
+ LOGEXIT(1, "Composite::addInclude");
+ }
+
+ void Composite::resolveWires()
+ {
+ LOGENTRY(1, "Composite::resolveWires");
+
+ for (WIRES::iterator iter = wires.begin();
+ iter != wires.end();
+ iter++)
+ {
+ Wire* wire = *iter;
+
+ // Locate the target
+ Service* service = findComponentService(wire->getTarget());
+ if (!service)
+ {
+ LOGERROR_1(0, "Composite::resolveWires: Wire target %s not found", wire->getTarget().c_str());
+ }
+ else
+ {
+ Component* component = findComponent(wire->getSourceComponent());
+ if (component)
+ {
+ Reference* reference = component->findReference(wire->getSourceReference());
+ if (reference)
+ {
+
+ // Configure the binding on the reference from the binding on the target
+ // service
+ reference->getBinding()->configure(service->getBinding());
+ }
+ else
+ {
+ LOGERROR_1(0, "Composite::resolveWires: Wire source reference %s not found", wire->getSourceReference().c_str());
+ }
+ }
+ else
+ {
+ LOGERROR_1(0, "Composite::resolveWires: Wire source %s not found", wire->getSourceComponent().c_str());
+ }
+ }
+ }
+
+ LOGEXIT(1, "Composite::resolveWires");
+ }
+
+ void Composite::addWSDLDefinition(commonj::sdo::DataObjectPtr wsdlModel)
+ {
+ LOGENTRY(1, "Composite::addWSDLDefinition");
+ WSDLDefinition* wsdlDefinition = new WSDLDefinition(wsdlModel);
+ wsdlDefinitions[wsdlDefinition->getNamespace()] = wsdlDefinition;
+ LOGEXIT(1, "Composite::addWSDLDefinition");
+
+ }
+
+ WSDLDefinition* Composite::findWSDLDefinition(const std::string& wsdlNamespace )
+ {
+ return wsdlDefinitions[wsdlNamespace];
+
+ }
+
+ commonj::sdo::XSDHelperPtr Composite::getXSDHelper()
+ {
+ if (xsdHelper == 0)
+ {
+ xsdHelper = commonj::sdo::HelperProvider::getXSDHelper();
+ }
+
+ return xsdHelper;
+ }
+
+ commonj::sdo::XMLHelperPtr Composite::getXMLHelper()
+ {
+ if (xmlHelper == 0)
+ {
+ xmlHelper = commonj::sdo::HelperProvider::getXMLHelper(getXSDHelper()->getDataFactory());
+ }
+
+ return xmlHelper;
+ }
+
+ commonj::sdo::DataFactoryPtr Composite::getDataFactory()
+ {
+ return getXSDHelper()->getDataFactory();
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.h
new file mode 100644
index 0000000000..3e9fdfa832
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Composite.h
@@ -0,0 +1,199 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_composite_h
+#define tuscany_sca_model_composite_h
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+#include <map>
+using std::map;
+#include <vector>
+using std::vector;
+
+#include "commonj/sdo/SDO.h"
+
+#include "tuscany/sca/model/ComponentType.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+ class Component;
+ class ComponentType;
+ class Service;
+ class WSDLDefinition;
+ class Wire;
+
+ /**
+ * Represents a composite.
+ * A composite is used to assemble SCA elements in logical groupings.
+ * It is the basic unit of composition within an SCA System. An SCA composite contains a
+ * set of components, services, references and the wires that interconnect them, plus a set
+ * of properties which can be used to configure components.
+ */
+ class Composite : public ComponentType
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param name the name of the composite.
+ * @param root the root of the composite in the file system.
+ */
+ SCA_API Composite(const string& name, const string& root);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Composite();
+
+ /**
+ * Returns the root directory of the composite.
+ * @return The root of the composite in the file system.
+ */
+ SCA_API const string& getRoot() const { return root; }
+
+ /**
+ * Add a new component to the composite.
+ * @param component The component to add.
+ */
+ SCA_API void addComponent(Component* component);
+
+ /**
+ * Add/include a composite in this composite.
+ * @param composite The composite included in this composite.
+ */
+ SCA_API void addInclude(Composite* composite);
+
+ /**
+ * Add a wire to the model.
+ * @param source The source location. Either the source component and
+ * reference (optional), or an entry point.
+ * @param target The target location. Either the target component and
+ * service (optional), or an external service.
+ */
+ SCA_API void addWire(const string& source, const string& target);
+
+ /**
+ * Find a component by name.
+ * @param componentName The name of the component to be found.
+ * @return The component that was found, or 0 if not found.
+ */
+ SCA_API Component* findComponent(const string& componentName);
+
+ /**
+ * Find a component and service by name.
+ * @param componentServiceName A string of the form
+ * "componentName"/"serviceName" where the service name is optional
+ * if there is only one service on the component.
+ * @return The Service that was found, or 0 if not found.
+ */
+ SCA_API Service* findComponentService(const string& componentServiceName);
+
+ /**
+ * Add a WSDL definition to the composite.
+ * @param wsdlModel A data object holding all the information about
+ * the WSDL definition from a WSDL file.
+ */
+ SCA_API void addWSDLDefinition(commonj::sdo::DataObjectPtr wsdlModel);
+
+ /**
+ * Find a WSDL definition by target namespace.
+ * @param wsdlNamespace The namespace of the WSDL definitions to find.
+ */
+ SCA_API WSDLDefinition* findWSDLDefinition(const string& wsdlNamespace);
+
+ /**
+ * Return a cached SDO XSDHelper.
+ */
+ SCA_API commonj::sdo::XSDHelperPtr getXSDHelper(void);
+
+ /**
+ * Return a cached SDO XMLHelper.
+ */
+ SCA_API commonj::sdo::XMLHelperPtr getXMLHelper(void);
+
+ /**
+ * Return a data factory which has all the types defined in XSDs and
+ * WSDL files configured for this composite.
+ * @return The data factory for this composite.
+ */
+ SCA_API commonj::sdo::DataFactoryPtr getDataFactory(void);
+
+ /**
+ * Work through the list of wires and connect the source and target uris.
+ */
+ SCA_API void resolveWires();
+
+ private:
+
+ /**
+ * Directory of the root of the composite.
+ */
+ string root;
+
+ /**
+ * Cached XSDHelper.
+ */
+ commonj::sdo::XSDHelperPtr xsdHelper;
+
+ /**
+ * Cached XMLHelper.
+ */
+ commonj::sdo::XMLHelperPtr xmlHelper;
+
+ /**
+ * Map (by name) of all the components in this composite.
+ */
+ typedef map<string, Component*> COMPONENT_MAP;
+ COMPONENT_MAP components;
+
+ /**
+ * Vector of all the composites included in this composite.
+ */
+ typedef vector<Composite*> INCLUDES;
+ INCLUDES includes;
+
+ /**
+ * Vector of all the wires in this composite.
+ */
+ typedef vector<Wire*> WIRES;
+ WIRES wires;
+
+ /**
+ * Map by namespace of all the wsdl definitions in this composite.
+ */
+ typedef map<string, WSDLDefinition*> WSDL_MAP;
+ WSDL_MAP wsdlDefinitions;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_composite_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.cpp
new file mode 100644
index 0000000000..e3ef4b05f4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.cpp
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/CompositeReference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Service.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ CompositeReference::CompositeReference(Composite* composite, const string& name,
+ Interface* intface, Interface* callbackInterface, bool conversational, ReferenceType::Multiplicity multiplicity) :
+ Component(composite, name, new ComponentType(composite, name))
+ {
+ LOGENTRY(1, "CompositeReference::constructor");
+ LOGINFO_1(2, "CompositeReference::constructor: CompositeReference name: %s", name.c_str());
+
+ // Initialize the component type, service type and service
+ ComponentType* componentType = getType();
+ ServiceType* serviceType = new ServiceType(
+ componentType, "", intface, callbackInterface);
+ componentType->addServiceType(serviceType);
+
+ service = new Service(this, serviceType);
+ addService(service);
+
+ LOGEXIT(1, "CompositeReference::constructor");
+ }
+
+ // Destructor
+ CompositeReference::~CompositeReference()
+ {
+ }
+
+ } // End namespace model
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.h
new file mode 100644
index 0000000000..aa2ed12e7f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeReference.h
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_compositereferencetype_h
+#define tuscany_sca_model_compositereferencetype_h
+
+#include <string>
+
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ReferenceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+ class ComponentType;
+ class Composite;
+ class Interface;
+ class Service;
+
+ /**
+ * Represents a reference in a composite.
+ * Composite references represent dependencies that the composite has on services provided elsewhere,
+ * outside the composite.
+ */
+ class CompositeReference : public Component
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param name The name of the reference.
+ */
+ SCA_API CompositeReference(Composite* composite, const string& name,
+ Interface* intface, Interface* callbackInterface, bool conversational, ReferenceType::Multiplicity multiplicity);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~CompositeReference();
+
+ /**
+ * Returns the service exposed by this composite reference.
+ * @return The service exposed by this composite reference.
+ */
+ SCA_API Service* getService() const { return service; };
+
+ private:
+
+ /**
+ * The service exposed by this composite reference.
+ */
+ Service* service;
+
+ };
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_compositereferencetype_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.cpp
new file mode 100644
index 0000000000..691091449e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.cpp
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/CompositeService.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/ServiceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ CompositeService::CompositeService(Composite* composite, const string& name,
+ Interface* intface, Interface* callbackInterface, bool conversational,
+ ReferenceType::Multiplicity multiplicity) :
+ Component(composite, name, new ComponentType(composite, name))
+ {
+ LOGENTRY(1, "CompositeService::constructor");
+ LOGINFO_1(2, "CompositeService::constructor: CompositeService name: %s", name.c_str());
+
+ // Initialize the component type, reference type and reference
+ ComponentType* componentType = getType();
+ ReferenceType* referenceType = new ReferenceType(
+ componentType, "", intface, callbackInterface, multiplicity);
+ componentType->addReferenceType(referenceType);
+
+ reference = new Reference(this, referenceType);
+ addReference(reference);
+
+ LOGEXIT(1, "CompositeService::constructor");
+ }
+
+ // Destructor
+ CompositeService::~CompositeService()
+ {
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.h
new file mode 100644
index 0000000000..c0c185676a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/CompositeService.h
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_compositeservicetype_h
+#define tuscany_sca_model_compositeservicetype_h
+
+#include <string>
+using std::string;
+#include <vector>
+using std::vector;
+
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ReferenceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ class Composite;
+ class Component;
+ class Interface;
+ class Reference;
+
+ /**
+ * Represents a service in a composite.
+ * Composite services define the public services provided by the composite, which can be
+ * accessed from outside the composite.
+ */
+ class CompositeService : public Component
+ {
+
+ public:
+
+ /**
+ * Constructor.
+ * @param componentType The component type on which this service is defined.
+ * @param name The name of the service.
+ */
+ SCA_API CompositeService(Composite* composite, const string& name,
+ Interface* intface, Interface* callbackInterface, bool conversational, ReferenceType::Multiplicity multiplicity);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~CompositeService();
+
+ /**
+ * Returns the reference used by this composite service.
+ * @return The reference used by this composite service.
+ */
+ SCA_API Reference* getReference() const { return reference; };
+
+ private:
+
+ /**
+ * The reference used by this composite service.
+ */
+ Reference* reference;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_compositeservicetype_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.cpp
new file mode 100644
index 0000000000..c9d8f017c7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/Contract.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ Contract::Contract(Interface *intface, Interface* callbackInterface) :
+ iface(intface), callbackInterface(callbackInterface)
+ {
+ }
+
+ // Destructor
+ Contract::~Contract()
+ {
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.h
new file mode 100644
index 0000000000..da533f4887
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Contract.h
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_contract_h
+#define tuscany_sca_model_contract_h
+
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Interface.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ /**
+ * Interface contracts define one or more business functions. These business functions are
+ * provided by services and are used by references. Services are defined by the interface which
+ * they implement.
+ * This interface will typically be extended to support concrete interface type systems, such as
+ * CPP classes, Java interfaces, WSDL 1.1 portTypes and WSDL 2.0 interfaces.
+ */
+ class Contract
+ {
+ public:
+
+ /**
+ * Constructor.
+ */
+ SCA_API Contract(Interface* intface, Interface* callbackInterface);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Contract();
+
+ /**
+ * Returns the interface for invocations from the requestor to the provider.
+ * @return The interface for invocations from the requestor to the provider.
+ */
+ SCA_API Interface* getInterface() const { return iface; }
+
+ /**
+ * Returns the interface for invocations from the provider back to the requestor.
+ * @return The interface for invocations from the provider back to the requestor.
+ */
+ SCA_API Interface* getCallbackInterface() const { return callbackInterface; }
+
+ private:
+
+ /**
+ * The interface for invocations from the requestor to the provider.
+ */
+ Interface* iface;
+
+ /**
+ * The interface for invocations from the provider back to the requestor.
+ */
+ Interface* callbackInterface;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_contract_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.cpp
new file mode 100644
index 0000000000..bbc6c79bc6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/Interface.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ Interface::Interface(bool remotable, bool conversational)
+ : remotable(remotable), conversational(conversational)
+ {
+ }
+
+ Interface::~Interface()
+ {
+ }
+
+ } // End namespace model
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.h
new file mode 100644
index 0000000000..f02476745e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Interface.h
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_interface_h
+#define tuscany_sca_model_interface_h
+
+#include <string>
+
+using namespace std;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ /**
+ * Information about an interface. Subtypes will hold information
+ * specific to a type of interface.
+ */
+ class Interface
+ {
+
+ public:
+
+ /**
+ * Constructor
+ */
+ SCA_API Interface(bool remotable, bool conversational);
+
+ /**
+ * Destructor
+ */
+ SCA_API virtual ~Interface();
+
+ /**
+ * Returns true if the interface is remotable.
+ * @return True if the interface is remotable.
+ */
+ SCA_API bool isRemotable() const { return remotable; };
+
+ /**
+ * Returns true if the interface is conversational.
+ * @return True if the interface is conversational.
+ */
+ SCA_API bool isConversational() const { return conversational; };
+
+ /**
+ * return the QName of schema type for this interface type
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#WSDLInterface")
+ */
+ SCA_API virtual const string& getInterfaceTypeQName() = 0;
+
+ private:
+
+ /**
+ * True if the interface is remotable
+ */
+ bool remotable;
+
+ /**
+ * True if the interface is conversational
+ */
+ bool conversational;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_interface_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.cpp
new file mode 100644
index 0000000000..fe83807af4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.cpp
@@ -0,0 +1,1815 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/export.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/ModelLoader.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/CompositeService.h"
+#include "tuscany/sca/model/CompositeReference.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/WSDLInterface.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "commonj/sdo/TypeDefinitions.h"
+#include "tuscany/sca/util/File.h"
+
+
+using namespace commonj::sdo;
+
+
+#if defined(WIN32) || defined (_WINDOWS)
+#define PATH_SEPARATOR ";"
+#else
+#define PATH_SEPARATOR ":"
+#endif
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+ // ===========
+ // Constructor
+ // ===========
+ ModelLoader::ModelLoader(Composite* system) : system(system)
+ {
+ LOGENTRY(1, "ModelLoader::constructor");
+
+ runtime = SCARuntime::getInstance();
+
+ LOGEXIT(1, "ModelLoader::constructor");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ ModelLoader::~ModelLoader()
+ {
+ }
+
+ // =========================================================
+ // load: Load the runtime model from the deployed xml files
+ // This class has the responsibility for translating from
+ // the SCDL files to the SCA runtime's in memory model.
+ // =========================================================
+ void ModelLoader::load(const string& systemRoot, const string& systemPath)
+ {
+ LOGENTRY(1, "ModelLoader::load");
+ LOGINFO_1(2,"system root: %s", systemRoot.c_str());
+ LOGINFO_1(2,"system path: %s", systemPath.c_str());
+
+ // Load composite implementations
+ // Composite implementations can occur anywhere on the given search path
+ if (systemPath != "")
+ {
+ loadComposites(systemRoot + PATH_SEPARATOR + systemPath);
+ }
+ else
+ {
+ loadComposites(systemRoot);
+ }
+
+ // Load system composites
+ // Composites on the the system root path get included
+ // in the System composite
+ loadSystem(systemRoot);
+
+ // Resolve the wires in the system composite
+ system->resolveWires();
+
+ LOGEXIT(1, "ModelLoader::load");
+ }
+
+ // ========================================================================
+ // loadSystem:
+ // Load all the composite files on the system root path
+ // Translate the composite information to composite model objects
+ // ========================================================================
+ void ModelLoader::loadSystem(const string& systemRoot)
+ {
+ // Get all the composite files on the system root path
+ // These composites are included in the system composite
+ LOGENTRY(1, "ModelLoader::loadSystem");
+ for (string path = systemRoot; path != ""; )
+ {
+ string dir;
+ Utils::tokeniseString(PATH_SEPARATOR, path, dir, path);
+ if (dir != "")
+ {
+ LOGINFO_1(2, "system root directory: %s", dir.c_str());
+ Files files(dir, "*.composite", false);
+ for (unsigned int i=0; i < files.size(); i++)
+ {
+ string fileName = files[i].getDirectory() + "/" + files[i].getFileName();
+ Composite* composite = compositeFiles[fileName];
+ if (composite)
+ {
+ // Include the composite in the system composite
+ system->addInclude(composite);
+ }
+ else
+ {
+ // We already got an error or warning indicating why the file
+ // didn't turn into a composite
+ }
+ }
+ }
+ }
+ LOGEXIT(1, "ModelLoader::loadSystem");
+ }
+
+ // =====================================================================
+ // loadComposites:
+ // Load all the composites from any directory under the composite search path
+ // Translate the composite information to composite model objects
+ // =====================================================================
+ void ModelLoader::loadComposites(const string& searchPath)
+ {
+ // Get all the composite files on the composite search path
+ LOGENTRY(1, "ModelLoader::loadComposites");
+ for (string path = searchPath; path != ""; )
+ {
+ string dir;
+ Utils::tokeniseString(PATH_SEPARATOR, path, dir, path);
+ if (dir != "")
+ {
+ LOGINFO_1(2, "composite path directory: %s", dir.c_str());
+ Files files(dir, "*.composite", true);
+ for (unsigned int i=0; i < files.size(); i++)
+ {
+ loadCompositeFile(files[i]);
+ }
+ }
+ }
+
+ // Complete the mapping of the composites
+ for (COMPOSITE_DATAOBJECTS::iterator iter = compositeDataObjects.begin();
+ iter != compositeDataObjects.end();
+ iter++)
+ {
+ mapCompositePass2(iter->first, iter->second);
+ }
+
+ LOGEXIT(1, "ModelLoader::loadComposites");
+ }
+
+ // ====================================================================
+ // loadCompositeFile:
+ // This method is called for each .composite file found under the composite search
+ // path. The location of this composite file will indicate the root of a composite.
+ // ====================================================================
+ Composite* ModelLoader::loadCompositeFile(const File& file)
+ {
+ LOGENTRY(1, "ModelLoader::loadCompositeFile");
+ LOGINFO_1(2, "composite filename: %s", file.getFileName().c_str());
+
+ Composite* composite = NULL;
+ try
+ {
+ string fileName = file.getDirectory() + "/" + file.getFileName();
+ if (compositeFiles[fileName] == NULL)
+ {
+ XMLDocumentPtr compositeFile = getXMLHelper()->loadFile(fileName.c_str());
+ if (compositeFile->getRootDataObject() == NULL)
+ {
+ LOGERROR_1(0, "ModelLoader::loadCompositeFile: Unable to load file: %s", fileName.c_str());
+ }
+ else
+ {
+ // Map the SCDL
+ composite = mapCompositePass1(file, compositeFile->getRootDataObject());
+
+ // Load the xsd types and wsdl files in the composite
+ loadTypeMetadata(file.getDirectory(), composite);
+ }
+ }
+
+ } catch (SDORuntimeException ex)
+ {
+ LOGERROR_1(0, "ModelLoader::loadCompositeFile: Exception caught: %s", ex.getMessageText());
+ }
+
+ LOGEXIT(1, "ModelLoader::loadCompositeFile");
+ return composite;
+ }
+
+ // ===========
+ // mapCompositePass1
+ // ===========
+ Composite* ModelLoader::mapCompositePass1(const File& file, DataObjectPtr root)
+ {
+ LOGENTRY(1, "ModelLoader::mapCompositePass1");
+
+ const string& compositeRootDir = file.getDirectory();
+ const string compositeName = root->getCString("name");
+ LOGINFO_2(2, "ModelLoader::mapCompositePass1: Loading composite: %s, root Dir: %s", compositeName.c_str(), compositeRootDir.c_str());
+
+ Composite* composite = new Composite(compositeName, compositeRootDir);
+ compositeModels[compositeName] = composite;
+ compositeDataObjects[compositeName] = root;
+ compositeFiles[file.getDirectory() + "/" + file.getFileName()] = composite;
+
+ // ------------
+ // Composite services
+ // ------------
+ DataObjectList& compositeServiceList = root->getList("service");
+ for (int i = 0; i < compositeServiceList.size(); i++)
+ {
+ addCompositeService(composite, compositeServiceList[i]);
+ }
+
+ // -----------------
+ // Composite references
+ // -----------------
+ DataObjectList& compositeReferenceList = root->getList("reference");
+ for (int cri = 0; cri < compositeReferenceList.size(); cri++)
+ {
+ addCompositeReference(composite, compositeReferenceList[cri]);
+ }
+
+ // -----
+ // Wires
+ // -----
+ DataObjectList& wireList = root->getList("wire");
+ for (int l = 0; l < wireList.size(); l++)
+ {
+ string source = wireList[l]->getCString("source");
+ string target = wireList[l]->getCString("target");
+ composite->addWire(source, target);
+ }
+
+ LOGEXIT(1, "ModelLoader::mapCompositePass1");
+ return composite;
+ }
+
+ // ===========
+ // mapCompositePass2
+ // ===========
+ Composite* ModelLoader::mapCompositePass2(const string& compositeName, DataObjectPtr root)
+ {
+ LOGENTRY(1, "ModelLoader::mapCompositePass2");
+
+ LOGINFO_1(2, "ModelLoader::mapCompositePass2: Loading composite: %s", compositeName.c_str());
+
+ Composite* composite = compositeModels[compositeName];
+
+ // ----------------------------
+ // Add components to the composite
+ // ----------------------------
+ DataObjectList& componentList = root->getList("component");
+ int i;
+ for (i=0; i < componentList.size(); i++)
+ {
+ addComponent(composite, componentList[i]);
+ }
+
+ // Resolve all the wires inside the composite
+ composite->resolveWires();
+
+ LOGEXIT(1, "ModelLoader::mapCompositePass2");
+ return composite;
+ }
+
+ // =================================
+ // addComponent:
+ // =================================
+ void ModelLoader::addComponent(Composite* composite, DataObjectPtr componentDO)
+ {
+ // -------------------
+ // Get the component implementation
+ // -------------------
+ DataObjectPtr impl = componentDO->getDataObject("implementation");
+ if (!impl)
+ {
+ string message = "No implementation for component: ";
+ message = message + componentDO->getCString("name");
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ // Create the component type
+ ComponentType* componentType;
+ string componentTypeName;
+ string componentTypePath;
+
+ string implTypeQname = impl->getType().getURI();
+ implTypeQname += "#";
+ implTypeQname += impl->getType().getName();
+
+ if (implTypeQname == "http://www.osoa.org/xmlns/sca/1.0#SCAImplementation")
+ {
+ // Handle a composite implementation
+ Composite* composite = compositeModels[impl->getCString("name")];
+ if (!composite)
+ {
+ string message = "Composite not found: ";
+ message = message + impl->getCString("name");
+ throw SystemConfigurationException(message.c_str());
+ }
+ componentType = composite;
+ }
+ else
+ {
+
+ // Locate extension that handles this implementation type
+ ImplementationExtension* implExtension = runtime->getImplementationExtension(implTypeQname);
+ if (implExtension)
+ {
+ componentType = implExtension->getImplementation(composite, impl);
+
+ // -----------------------
+ // Load the .componentType
+ // -----------------------
+ string typeFileName = composite->getRoot() + "/" + componentType->getName() + ".componentType";
+
+ // Check that the component type file exists
+ //TODO We need a better and portable way to do this
+ string dirName;
+ string fileName;
+ Utils::rTokeniseString("/", typeFileName, dirName, fileName);
+ Files files(dirName, fileName, false);
+ if (files.size() !=0)
+ {
+ try
+ {
+ XMLDocumentPtr componentTypeFile = getXMLHelper()->loadFile(typeFileName.c_str());
+ if (!componentTypeFile || componentTypeFile->getRootDataObject() == 0)
+ {
+ // Component type files are optional
+ LOGINFO_1(0, "ModelLoader::addComponent: Unable to load file: %s", typeFileName.c_str());
+ }
+ else
+ {
+ //Utils::printDO(componentTypeFile->getRootDataObject());
+ //commonj::sdo::SDOUtils::printDataObject(componentTypeFile->getRootDataObject());
+ addServiceTypes(composite, componentType, componentTypeFile->getRootDataObject());
+ addReferenceTypes(composite, componentType, componentTypeFile->getRootDataObject());
+ addPropertyTypes(componentType, componentTypeFile->getRootDataObject());
+ }
+ } catch (SDORuntimeException& ex)
+ {
+ LOGERROR_2(0, "ModelLoader::addComponent (%s): Exception caught: %s",
+ typeFileName.c_str(), ex.getMessageText());
+ throw SystemConfigurationException(ex.getMessageText());
+ }
+ }
+ }
+ else
+ {
+ LOGERROR_1(0, "ModelLoader::addComponent: Unsupported implementation type: %s", implTypeQname.c_str());
+
+ string message = "Implementation type not supported: ";
+ message = message + implTypeQname;
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+
+ // First check that references exist, some component types
+ // will create all used references automatically
+ DataObjectList& refs = componentDO->getList("reference");
+ for (int i=0; i<refs.size(); i++)
+ {
+ string refName = refs[i]->getCString("name");
+ if (!componentType->findReferenceType(refName))
+ {
+ // Configuration error: reference is not defined
+ string message = "Undefined reference: " + refName;
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+
+ // Create the component
+ Component* component = new Component(composite, componentDO->getCString("name"), componentType);
+ composite->addComponent(component);
+
+ // ----------
+ // Properties
+ // ----------
+ DataObjectList& props = componentDO->getList("property");
+ for (int pi=0; pi<props.size(); pi++)
+ {
+ string propName = props[pi]->getCString("name");
+ DataObjectPtr propValue = props[pi]->getDataObject("value");
+
+ component->setProperty(propName, propValue);
+ }
+
+ // ----------
+ // References
+ // ----------
+ for (int ri=0; ri<refs.size(); ri++)
+ {
+ // ----------------------------------------------------------
+ // Add the reference to the composite wires to be resolved later
+ // ----------------------------------------------------------
+ string refName = refs[ri]->getCString("name");
+ if (!component->findReference(refName))
+ {
+ // Configuration error: reference is not defined
+ string message = "Undefined reference: " + refName;
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ string src = component->getName() + "/" + refName;
+
+ // Get the reference value
+ string refValue = refs[ri]->getCString("value");
+
+ composite->addWire(src, refValue);
+ }
+ }
+
+ // =====================================================================
+ // addServiceTypes: add the services to the component type
+ // =====================================================================
+ void ModelLoader::addServiceTypes(Composite* composite, ComponentType* componentType, DataObjectPtr componentTypeDO)
+ {
+ DataObjectList& serviceTypes = componentTypeDO->getList("service");
+ for (int i=0; i<serviceTypes.size(); i++)
+ {
+ Interface* iface = getInterface(composite, serviceTypes[i]);
+ ServiceType* serviceType = new ServiceType(
+ componentType, serviceTypes[i]->getCString("name"), iface, NULL);
+ componentType->addServiceType(serviceType);
+ }
+ }
+
+ // ===================================================
+ // addReferenceTypes: add the references to the component type
+ // ===================================================
+ void ModelLoader::addReferenceTypes(Composite* composite, ComponentType* componentType, DataObjectPtr componentTypeDO)
+ {
+ DataObjectList& refs = componentTypeDO->getList("reference");
+ for (int i=0; i<refs.size(); i++)
+ {
+ ReferenceType::Multiplicity multiplicity;
+ if (refs[i]->isSet("multiplicity"))
+ {
+ string s = refs[i]->getCString("multiplicity");
+ multiplicity = ReferenceType::getMultiplicityFromString(s);
+ }
+ else
+ {
+ multiplicity = ReferenceType::ONE_ONE;
+ }
+
+ Interface* iface = getInterface(composite, refs[i]);
+
+ ReferenceType* referenceType = new ReferenceType(
+ componentType, refs[i]->getCString("name"), iface, NULL, multiplicity);
+ componentType->addReferenceType(referenceType);
+
+ }
+ }
+
+
+ // ==============
+ // getInterface
+ // ==============
+ Interface* ModelLoader::getInterface(Composite* composite, DataObjectPtr obj)
+ {
+ // -----------------
+ // get the interface
+ // -----------------
+ DataObjectPtr iface = obj->getDataObject("interface");
+ if (!iface)
+ {
+ string message = "No interface for: ";
+ message = message + obj->getCString("name");
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ string typeQname = iface->getType().getURI();
+ typeQname += "#";
+ typeQname += iface->getType().getName();
+
+ if (typeQname == WSDLInterface::typeQName)
+ {
+ // Load a WSDL interface
+ string qname = iface->getCString("interface");
+
+ return new WSDLInterface(qname, true, false);
+ }
+ else
+ {
+ // Locate extension that handles this interface type
+ InterfaceExtension* ifaceExtension = runtime->getInterfaceExtension(typeQname);
+ if (ifaceExtension)
+ {
+ return ifaceExtension->getInterface(composite, iface);
+ }
+ else
+ {
+ // log this for now.
+ LOGERROR_1(1, "ModelLoader::getInterface: Unsupported interface type: %s", typeQname.c_str());
+ return 0;
+ }
+ }
+
+ }
+
+ // ==============================================
+ // addProperties: add properties to the component type
+ // ==============================================
+ void ModelLoader::addPropertyTypes(ComponentType* componentType, DataObjectPtr componentTypeDO)
+ {
+ DataObjectList& props = componentTypeDO->getList("property");
+ for (int i=0; i<props.size(); i++)
+ {
+ //cout << "Property " << props[i];
+
+ string name = props[i]->getCString("name");
+ string type = props[i]->getCString("type");
+ bool many=false;
+ if (props[i]->isSet("many"))
+ {
+ many = props[i]->getBoolean("many");
+ }
+
+ //TODO need to add support for complex properties, need the SDO
+ // folks to help understand how to do this...
+ DataObjectPtr defaultValue = props[i]->getDataObject("value");
+
+ componentType->addPropertyType(name, type, many, &defaultValue);
+ }
+ }
+
+ // ===============================================
+ // addCompositeService: add an CompositeService to the composite
+ // ===============================================
+ void ModelLoader::addCompositeService(Composite* composite, DataObjectPtr compositeServiceDO)
+ {
+
+ //Utils::printDO(compositeServiceDO);
+ string compositeServiceName = compositeServiceDO->getCString("name");
+
+ Interface* iface;
+ if (compositeServiceDO->getDataObject("interface"))
+ {
+ iface = getInterface(composite, compositeServiceDO);
+ }
+ else
+ {
+ iface = NULL;
+ }
+
+ ReferenceType::Multiplicity multiplicity;
+ if (compositeServiceDO->isSet("multiplicity"))
+ {
+ string s = compositeServiceDO->getCString("multiplicity");
+ multiplicity = ReferenceType::getMultiplicityFromString(s);
+ }
+ else
+ {
+ multiplicity = ReferenceType::ONE_ONE;
+ }
+
+ CompositeService* compositeService = new CompositeService(
+ composite, compositeServiceName, iface, NULL, false, multiplicity);
+
+ composite->addComponent(compositeService);
+
+ DataObjectList& refs = compositeServiceDO->getList("reference");
+ for (int i=0; i<refs.size(); i++)
+ {
+ // ----------------------------------------------------------
+ // Add the reference to the composite wires to be resolved later
+ // ----------------------------------------------------------
+ string targ = refs.getCString(i);
+ composite->addWire(compositeServiceName, targ);
+ }
+
+ // Get binding, it will be the first and only binding
+ DataObjectList& bindings = compositeServiceDO->getList("binding");
+ if (bindings.size()==0)
+ {
+ string message = "No binding for compositeService: ";
+ message = message + compositeServiceDO->getCString("name");
+ throw SystemConfigurationException(message.c_str());
+ }
+ DataObjectPtr binding = bindings[0];
+
+ // Utils::printDO(binding);
+
+ // Determine the binding type
+ string bindingType = binding->getType().getName();
+ string bindingTypeQname = binding->getType().getURI();
+ bindingTypeQname += "#";
+ bindingTypeQname += binding->getType().getName();
+
+ // Locate the extension that handles this binding type
+ ReferenceBindingExtension* bindingExtension = runtime->getReferenceBindingExtension(bindingTypeQname);
+ if (bindingExtension)
+ {
+ Reference* reference = compositeService->getReference();
+ ReferenceBinding* referenceBinding = bindingExtension->getReferenceBinding(composite, reference, binding);
+ reference->setBinding(referenceBinding);
+ }
+ else
+ {
+ LOGERROR_1(0, "ModelLoader::addCompositeService: Unsupported binding type: %s", bindingTypeQname.c_str());
+
+ string message = "Binding type not supported: ";
+ message = message + bindingTypeQname;
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+
+
+ // =========================================================
+ // addCompositeReference: add a CompositeReference to the composite
+ // =========================================================
+ void ModelLoader::addCompositeReference(Composite* composite, DataObjectPtr compositeReferenceDO)
+ {
+ string compositeReferenceName = compositeReferenceDO->getCString("name");
+
+ Interface* iface;
+ if (compositeReferenceDO->getDataObject("interface"))
+ {
+ iface = getInterface(composite, compositeReferenceDO);
+ }
+ else
+ {
+ iface = NULL;
+ }
+
+ CompositeReference* compositeReference = new CompositeReference(
+ composite, compositeReferenceName, iface, NULL, false, ReferenceType::ONE_ONE);
+
+ composite->addComponent(compositeReference);
+
+ // Get binding, it will be the first and only binding
+ DataObjectList& bindings = compositeReferenceDO->getList("binding");
+ if (bindings.size()==0)
+ {
+ string message = "No binding for compositeReference: ";
+ message = message + compositeReferenceDO->getCString("name");
+ throw SystemConfigurationException(message.c_str());
+ }
+ DataObjectPtr binding = bindings[0];
+
+ //Utils::printDO(binding);
+
+ // Determine the binding type
+ string bindingType = binding->getType().getName();
+ string bindingTypeQname = binding->getType().getURI();
+ bindingTypeQname += "#";
+ bindingTypeQname += binding->getType().getName();
+
+ // Locate the extension that handles this binding type
+ ServiceBindingExtension* bindingExtension = runtime->getServiceBindingExtension(bindingTypeQname);
+ if (bindingExtension)
+ {
+ Service *service = compositeReference->getService();
+ ServiceBinding* serviceBinding = bindingExtension->getServiceBinding(composite, service, binding);
+ service->setBinding(serviceBinding);
+ }
+ else
+ {
+ LOGERROR_1(0, "ModelLoader::addCompositeReference: Unsupported binding type: %s", bindingTypeQname.c_str());
+
+ string message = "Binding type not supported: ";
+ message = message + bindingTypeQname;
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+
+
+ ///
+ /// Use the Tuscany.config file in the composite root directory to
+ /// determine which xsds and wsdls to load into a dataFactory.
+ ///
+ void ModelLoader::loadTypeMetadata(const string &compositeRootDir, Composite* composite)
+ {
+ LOGENTRY(1, "ModelLoader::loadTypeMetadata");
+
+ // Load the "Tuscany.config" file, if it exists
+ Files files(compositeRootDir, "Tuscany.config", false);
+ if (files.size() !=0)
+ {
+ for (unsigned int i=0; i < files.size(); i++)
+ {
+ string filename = compositeRootDir + "/" + files[i].getFileName();
+ XMLDocumentPtr compositeConfigFile = getXMLHelper()->loadFile(filename.c_str());
+ if (compositeConfigFile->getRootDataObject() == 0)
+ {
+ LOGERROR_1(0, "ModelLoader::loadTypeMetadata: Unable to load file: %s", filename.c_str());
+ }
+ else
+ {
+ LOGINFO_2(2, "ModelLoader::loadTypeMetadata: Loading composite config for: %s, root Dir: %s", composite->getName().c_str(), compositeRootDir.c_str());
+
+ if(compositeConfigFile->getRootDataObject()->isSet("xsd"))
+ {
+ DataObjectList& xsds = compositeConfigFile->getRootDataObject()->getList("xsd/file");
+
+ for (int i=0; i<xsds.size(); i++)
+ {
+ if(xsds[i]->isSet("name"))
+ {
+ // Load a xsd file -> set the types in the compositeComponents data factory file
+ string xsdName = compositeRootDir + "/" +xsds[i]->getCString("name");
+ loadXMLSchema(composite, xsdName.c_str());
+ }
+ }
+ }
+
+
+ if( compositeConfigFile->getRootDataObject()->isSet("wsdl"))
+ {
+ DataObjectList& wsdls = compositeConfigFile->getRootDataObject()->getList("wsdl/file");
+ for (int j=0; j<wsdls.size(); j++)
+ {
+ if(wsdls[i]->isSet("name"))
+ {
+ string wsdlName = compositeRootDir + "/" +wsdls[j]->getCString("name");
+ // Load a wsdl file -> get the types, then the contents of the wsdl
+ loadXMLSchema(composite, wsdlName.c_str());
+
+ // Load the contents of the wsdl files
+ loadWSDLDefinition(composite, wsdlName.c_str());
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ // The default scheme is to have no Tuscany.config file, then we simply load all
+ // WSDLs and XSDs that we find under the composite root
+
+ Files xsdFiles(compositeRootDir, "*.xsd", true);
+ for (unsigned int i=0; i < xsdFiles.size(); i++)
+ {
+ // Load a xsd file -> set the types in the compositeComponents data factory file
+ string xsdName = xsdFiles[i].getDirectory() + "/" + xsdFiles[i].getFileName();
+ loadXMLSchema(composite, xsdName.c_str());
+
+ }
+
+ Files wsdlFiles(compositeRootDir, "*.wsdl", true);
+ for (unsigned int wi=0; wi < wsdlFiles.size(); wi++)
+ {
+ // Load a wsdl file -> get the types, then the contents of the wsdl
+ string wsdlName = wsdlFiles[wi].getDirectory() + "/" + wsdlFiles[wi].getFileName();
+ loadXMLSchema(composite, wsdlName.c_str());
+
+ // Load the contents of the wsdl files
+ loadWSDLDefinition(composite, wsdlName.c_str());
+ }
+ }
+
+ LOGEXIT(1, "ModelLoader::loadTypeMetadata");
+ }
+
+
+ ///
+ /// Use the types from an xsd or wsdl file
+ ///
+ void ModelLoader::loadXMLSchema(Composite* composite, const char *fileName)
+ {
+ LOGENTRY(1, "ModelLoader::loadXMLSchema");
+
+ // Load a xsd file -> set the types in the data factory associated with
+ // the composite
+ try {
+ composite->getXSDHelper()->defineFile(fileName);
+ //Utils::printTypes((*compositeIter)->getXSDHelper()->getDataFactory());
+
+ } catch (SDOTypeNotFoundException ex)
+ {
+ LOGERROR_1(0, "ModelLoader: Exception caught: %s", ex.getMessageText());
+ throw ex;
+ }
+ LOGEXIT(1, "ModelLoader::loadXMLSchema");
+ }
+
+ ///
+ /// Load the web services definition from a wsdl
+ ///
+ void ModelLoader::loadWSDLDefinition(Composite* composite, const char *fileName)
+ {
+ LOGENTRY(1, "ModelLoader::loadWSDLDefinition");
+
+ try {
+ // Load the wsdl file
+ XMLDocumentPtr doc = getXMLHelper()->loadFile(fileName);
+
+ if (doc!=0 && doc->getRootDataObject()!=0)
+ {
+ //Utils::printDO(doc->getRootDataObject());
+
+ // Add the root WSDL object to the composite
+ composite->addWSDLDefinition(doc->getRootDataObject());
+
+ }
+ else
+ {
+ LOGERROR_1(0, "ModelLoader: Unable to load or parse WSDL %s", fileName);
+ }
+
+ } catch (SDOTypeNotFoundException ex)
+ {
+ LOGERROR_1(0, "ModelLoader: SDOTypeNotFoundException caught: %s", ex.getMessageText());
+ throw ex;
+ }
+ catch (SDONullPointerException ex)
+ {
+ LOGERROR_1(0, "ModelLoader: SDONullPointerException caught: %s", ex.getMessageText());
+ throw ex;
+ }
+ LOGEXIT(1, "ModelLoader::loadWSDLDefinition");
+
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+ // Methods used to load the model into memory
+ //////////////////////////////////////////////////////////////////////////////
+
+ ///
+ /// Get an XSDHelper that has the appropriate XSDs already loaded
+ ///
+ const XSDHelperPtr ModelLoader::getXSDHelper()
+ {
+ if (myXSDHelper == 0)
+ {
+
+ // Create an xsd helper
+ myXSDHelper = HelperProvider::getXSDHelper();
+
+ try {
+
+ // Load the Assembly model schema
+ string root = SCARuntime::getInstance()->getInstallRoot();
+ string filename = root + "/xsd/sca.xsd";
+
+ myXSDHelper->defineFile(filename.c_str());
+
+ // Tuscany specific xsd for config files
+ filename = root + "/xsd/tuscany.xsd";
+ myXSDHelper->defineFile(filename.c_str());
+
+ initializeWSDLModel(myXSDHelper);
+
+ // Load any schema from the extensions directory
+ string extensionsRoot = root + "/extensions";
+
+ Files files(extensionsRoot, "*.xsd", true);
+ for (unsigned int i=0; i < files.size(); i++)
+ {
+ string extensionSchema = files[i].getDirectory() + "/" + files[i].getFileName();
+ myXSDHelper->defineFile(extensionSchema.c_str());
+ }
+
+
+ } catch (SDOTypeNotFoundException ex)
+ {
+ LOGERROR_1(0, "ModelLoader: Exception caught: %s", ex.getMessageText());
+ throw ex;
+ }
+ }
+
+ //cout << myXSDHelper->getDataFactory();
+
+ return myXSDHelper;
+ }
+
+
+ ///
+ /// Get an XMLHelper to load files
+ ///
+ const XMLHelperPtr ModelLoader::getXMLHelper()
+ {
+ if (myXMLHelper == 0) {
+
+ // Create an xml helper
+ myXMLHelper = HelperProvider::getXMLHelper(getXSDHelper()->getDataFactory());
+
+ }
+
+ return myXMLHelper;
+ }
+
+ void ModelLoader::initializeWSDLModel(XSDHelperPtr xsdHelper)
+ {
+ DataFactoryPtr dataFactory = xsdHelper->getDataFactory();
+
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBinding",
+ false, true, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationFault",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationMessage",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDocumentation",
+ true, true, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDocumented",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement",
+ false, false, true);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented",
+ false, true, true);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented",
+ false, true, true);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tImport",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tMessage",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, false);
+
+
+ TypeDefinition tpart;
+ tpart.setUri("http://schemas.xmlsoap.org/wsdl/");
+ tpart.setName("tPart");
+ tpart.setParentType("http://schemas.xmlsoap.org/wsdl/",
+ "tExtensibleAttributesDocumented", false);
+ PropertyDefinition propdef;
+ propdef.setName("name");
+ propdef.setLocalName("name");
+ propdef.setType("commonj.sdo", "String");
+ propdef.setIsContainment(true);
+ tpart.addPropertyDefinition(propdef);
+ propdef.setName("element");
+ propdef.setLocalName("element");
+ propdef.setIsQName(true);
+ tpart.addPropertyDefinition(propdef);
+ propdef.setName("type");
+ propdef.setLocalName("type");
+ tpart.addPropertyDefinition(propdef);
+ TypeDefinitions typedefs;
+ typedefs.addTypeDefinition(tpart);
+ xsdHelper->defineTypes(typedefs);
+
+ //Utils::printTypes(dataFactory);
+ /*dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPart",
+ false, false, false);*/
+
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPort",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPortType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tService",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/", "tTypes",
+ false, false, false);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "definitions",
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "import",
+ "http://schemas.xmlsoap.org/wsdl/", "tImport",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "types",
+ "http://schemas.xmlsoap.org/wsdl/", "tTypes",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "message",
+ "http://schemas.xmlsoap.org/wsdl/", "tMessage",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "portType",
+ "http://schemas.xmlsoap.org/wsdl/", "tPortType",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "binding",
+ "http://schemas.xmlsoap.org/wsdl/", "tBinding",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "service",
+ "http://schemas.xmlsoap.org/wsdl/", "tService",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "input",
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "output",
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "fault",
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "output",
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "input",
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "fault",
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "arrayType",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "RootType",
+ "required",
+ "commonj.sdo", "Boolean",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBinding",
+ "operation",
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBinding",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBinding",
+ "type",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ "input",
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationMessage",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ "output",
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationMessage",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ "fault",
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationFault",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperation",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationFault",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationFault",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationMessage",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tBindingOperationMessage",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "import",
+ "http://schemas.xmlsoap.org/wsdl/", "tImport",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "types",
+ "http://schemas.xmlsoap.org/wsdl/", "tTypes",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "message",
+ "http://schemas.xmlsoap.org/wsdl/", "tMessage",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "portType",
+ "http://schemas.xmlsoap.org/wsdl/", "tPortType",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "binding",
+ "http://schemas.xmlsoap.org/wsdl/", "tBinding",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "service",
+ "http://schemas.xmlsoap.org/wsdl/", "tService",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "targetNamespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDefinitions",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tDocumented",
+ "documentation",
+ "http://schemas.xmlsoap.org/wsdl/", "tDocumentation",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement",
+ "required",
+ "commonj.sdo", "Boolean",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented",
+ "http://schemas.xmlsoap.org/wsdl/", "tDocumented");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented",
+ "http://schemas.xmlsoap.org/wsdl/", "tDocumented");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ "message",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tImport",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tImport",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tImport",
+ "location",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tMessage",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tMessage",
+ "part",
+ "http://schemas.xmlsoap.org/wsdl/", "tPart",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tMessage",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ "input",
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ "output",
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ "fault",
+ "http://schemas.xmlsoap.org/wsdl/", "tFault",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ "parameterOrder",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tParam",
+ "message",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPart",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented");
+ /*dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPart",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPart",
+ "element",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPart",
+ "type",
+ "commonj.sdo", "URI",
+ false, false, true);*/
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPort",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPort",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPort",
+ "binding",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPortType",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleAttributesDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPortType",
+ "operation",
+ "http://schemas.xmlsoap.org/wsdl/", "tOperation",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tPortType",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tService",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tService",
+ "port",
+ "http://schemas.xmlsoap.org/wsdl/", "tPort",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/", "tService",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/", "tTypes",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibleDocumented");
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tAddress",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBinding",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFault",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ false, false, true);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tOperation",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tStyleChoice",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, false);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "binding",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBinding",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "operation",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tOperation",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "body",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "encodingStyle",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "use",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "fault",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFault",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "header",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "message",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "part",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "use",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "encodingStyle",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "headerfault",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "RootType",
+ "address",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tAddress",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tAddress",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tAddress",
+ "location",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBinding",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBinding",
+ "transport",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBinding",
+ "style",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tStyleChoice",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ "parts",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ "encodingStyle",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ "use",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFault",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFault",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tBody");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ "required",
+ "commonj.sdo", "Boolean",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ "parts",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ "encodingStyle",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ "use",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tFaultRes",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "headerfault",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ true, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "message",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "part",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "use",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "encodingStyle",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeader",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ "message",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ "part",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ "use",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ "encodingStyle",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "encodingStyle",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tHeaderFault",
+ "namespace",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tOperation",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tOperation",
+ "soapAction",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tOperation",
+ "style",
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tStyleChoice",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "tStyleChoice",
+ "commonj.sdo", "String");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap/", "useChoice",
+ "commonj.sdo", "String");
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "RootType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "addressType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "bindingType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "operationType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "urlEncoded",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "urlReplacement",
+ false, false, false);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "RootType",
+ "address",
+ "http://schemas.xmlsoap.org/wsdl/http/", "addressType",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "RootType",
+ "binding",
+ "http://schemas.xmlsoap.org/wsdl/http/", "bindingType",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "RootType",
+ "operation",
+ "http://schemas.xmlsoap.org/wsdl/http/", "operationType",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "RootType",
+ "urlEncoded",
+ "http://schemas.xmlsoap.org/wsdl/http/", "urlEncoded",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "RootType",
+ "urlReplacement",
+ "http://schemas.xmlsoap.org/wsdl/http/", "urlReplacement",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "addressType",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "addressType",
+ "location",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "bindingType",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "bindingType",
+ "verb",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "operationType",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/http/", "operationType",
+ "location",
+ "commonj.sdo", "URI",
+ false, false, true);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "RootType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "contentType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "multipartRelatedType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tMimeXml",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tPart",
+ false, true, false);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "RootType",
+ "content",
+ "http://schemas.xmlsoap.org/wsdl/mime/", "contentType",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "RootType",
+ "multipartRelated",
+ "http://schemas.xmlsoap.org/wsdl/mime/", "multipartRelatedType",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "RootType",
+ "mimeXml",
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tMimeXml",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "contentType",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "contentType",
+ "type",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "contentType",
+ "part",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "multipartRelatedType",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "multipartRelatedType",
+ "part",
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tPart",
+ true, false, true);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tMimeXml",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tMimeXml",
+ "part",
+ "commonj.sdo", "String",
+ false, false, true);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/wsdl/mime/", "tPart",
+ "name",
+ "commonj.sdo", "String",
+ false, false, true);
+
+
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "RootType",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tAddress",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tBinding",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tBody",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs",
+ false, true, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tFault",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tFaultRes",
+ false, false, true);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tHeader",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tHeaderFault",
+ false, true, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tOperation",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tParts",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tStyleChoice",
+ false, false, false);
+ dataFactory->addType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "useChoice",
+ false, false, false);
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tAddress",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tBinding",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tBody",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs",
+ "http://schemas.xmlsoap.org/wsdl/", "tExtensibilityElement");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tFault",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tFaultRes");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tFaultRes",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tBody");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tHeader",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tOperation",
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tExtensibilityElementOpenAttrs");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "tStyleChoice",
+ "commonj.sdo", "String");
+ dataFactory->setBaseType(
+ "http://schemas.xmlsoap.org/wsdl/soap12/", "useChoice",
+ "commonj.sdo", "String");
+ }
+
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.h
new file mode 100644
index 0000000000..d0374e61d6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ModelLoader.h
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_modelloader_h
+#define tuscany_sca_model_modelloader_h
+
+#include "tuscany/sca/export.h"
+#include "commonj/sdo/SDO.h"
+
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/util/File.h"
+
+#include <map>
+using std::map;
+
+using commonj::sdo::DataObjectPtr;
+using commonj::sdo::XSDHelperPtr;
+using namespace tuscany::sca;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ /**
+ * Provides methods to load the runtime model from the SCDL file.
+ */
+ class ModelLoader {
+
+ public:
+ /**
+ * Constructor.
+ * @param system The SCA system to load.
+ */
+ ModelLoader(Composite* system);
+
+ /**
+ * Destructor.
+ */
+ virtual ~ModelLoader();
+
+ /**
+ * Load the model from the configuration information.
+ * @param systemRoot The location of the system configuration
+ * @param systemPath The search path for composites
+ */
+ void load(const string& systemRoot, const string& systemPath);
+
+ private:
+ void loadSystem(const string& systemRoot);
+
+ void loadComposites(const string& searchPath);
+ Composite* loadCompositeFile(const File& file);
+ Composite* mapCompositePass1(const File& file, DataObjectPtr rootDO);
+ Composite* mapCompositePass2(const string& compositeName, DataObjectPtr rootDO);
+
+ void addComponent(Composite* composite, DataObjectPtr componentDO);
+ void addCompositeService(Composite* composite, DataObjectPtr compositeServiceDO);
+ void addCompositeReference(Composite* composite, DataObjectPtr referenceServiceDO);
+
+ void addServiceTypes(Composite* composite, ComponentType* componentType, DataObjectPtr componentTypeDO);
+ void addReferenceTypes(Composite* composite, ComponentType* componentType, DataObjectPtr componentTypeDO);
+ void addPropertyTypes(ComponentType* componentType, DataObjectPtr componentTypeDO);
+
+ void loadTypeMetadata(const string &compositeRootDir, Composite* composite);
+
+ void loadXMLSchema(Composite* composite, const char *fileName);
+ void loadWSDLDefinition(Composite* composite, const char *fileName);
+ void initializeWSDLModel(XSDHelperPtr xsdHelper);
+
+ Interface* getInterface(Composite* composite, DataObjectPtr obj);
+
+ SCARuntime* runtime;
+
+ commonj::sdo::XMLHelperPtr myXMLHelper; // Used to load scdl files
+ commonj::sdo::XSDHelperPtr myXSDHelper; // Used to load xsds
+
+ const commonj::sdo::XSDHelperPtr getXSDHelper(void);
+ const commonj::sdo::XMLHelperPtr getXMLHelper(void);
+
+ /**
+ * The composite describing the composition of the system
+ */
+ Composite* system;
+
+ /**
+ * Maps of all the composites installed on the system.
+ */
+ typedef map<string, Composite*> COMPOSITE_MODELS;
+ COMPOSITE_MODELS compositeModels;
+
+ typedef map<string, DataObjectPtr> COMPOSITE_DATAOBJECTS;
+ COMPOSITE_DATAOBJECTS compositeDataObjects;
+
+ typedef map<string, Composite*> COMPOSITE_FILES;
+ COMPOSITE_FILES compositeFiles;
+
+ };
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_modelloader_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.cpp
new file mode 100644
index 0000000000..98084c6261
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.cpp
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ // Constructor
+ Reference::Reference(Component* component, ReferenceType* referenceType)
+ : component(component), type(referenceType), binding(0)
+ {
+ }
+
+ // Destructor
+ Reference::~Reference()
+ {
+ }
+
+ void Reference::setBinding(ReferenceBinding* binding)
+ {
+ this->binding = binding;
+ }
+
+ ReferenceBinding* Reference::getBinding() const
+ {
+ return binding;
+ }
+
+ void Reference::addTarget(Service* target)
+ {
+ if (type->getMultiplicity() == ReferenceType::ONE_ONE || type->getMultiplicity() == ReferenceType::ZERO_ONE)
+ {
+ if (targets.size() > 0)
+ {
+ // throw exception
+ string message = "Duplicate wire for reference: " + type->getName();
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+
+ targets.push_back(target);
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.h
new file mode 100644
index 0000000000..b58ca54b4a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Reference.h
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_reference_h
+#define tuscany_sca_model_reference_h
+
+#include <string>
+using std::string;
+#include <vector>
+using std::vector;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ class Component;
+ class ReferenceType;
+ class ReferenceBinding;
+ class Service;
+
+ /**
+ * An addressable instance of a reference type associated with a particular component.
+ * Each reference represents a configured version of a logical
+ * reference type defined in the component type. If the logical reference
+ * has a multiplicity greater than 1 (0..n or 1..n) then the configured
+ * reference many have multiple targets.
+ */
+ class Reference
+ {
+ public:
+ /**
+ * Constructor.
+ * @param component The component on which the reference is defined.
+ * @param referenceType The reference type defining the characteristics of the reference.
+ */
+ SCA_API Reference(Component* component, ReferenceType* referenceType);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Reference();
+
+ /**
+ * Returns the component on which this reference is defined.
+ * @return The component on which this reference is defined.
+ */
+ SCA_API Component* getComponent() const { return component; }
+
+ /**
+ * Returns the reference type defining the characteristics of the reference.
+ * @return The reference type defining the characteristics of the reference.
+ */
+ SCA_API ReferenceType* getType() const { return type; }
+
+ /**
+ * Returns the binding supported by the reference.
+ * @return The binding supported by the reference.
+ */
+ SCA_API ReferenceBinding* getBinding() const;
+
+ /**
+ * Sets the binding supported by the reference.
+ * @param binding The binding supported by the reference.
+ */
+ SCA_API void setBinding(ReferenceBinding* binding);
+
+ /**
+ * Add a target for this reference. There may be more than
+ * one if the multiplicity is 0..n or 1..n.
+ * @param target The target of the reference.
+ */
+ SCA_API void addTarget(Service* target);
+
+ typedef vector<Service*> TARGETS;
+
+ /**
+ * Get a vector of all the targets from this reference.
+ * @return The targets of this reference.
+ */
+ SCA_API const TARGETS& getTargets() const { return targets; }
+
+ private:
+
+ /**
+ * The component on which this reference is defined.
+ */
+ Component* component;
+
+ /**
+ * The reference type defining the characteristics of the reference.
+ */
+ ReferenceType* type;
+
+ /**
+ * The binding supported by this reference
+ */
+ ReferenceBinding* binding;
+
+ /**
+ * Vector of all the targets wired from this reference.
+ */
+ TARGETS targets;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_reference_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.cpp
new file mode 100644
index 0000000000..e18f8f3461
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ ReferenceBinding::ReferenceBinding(Reference *reference, const string& uri) :
+ Binding(uri), reference(reference)
+ {
+ }
+
+ // Destructor
+ ReferenceBinding::~ReferenceBinding()
+ {
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.h
new file mode 100644
index 0000000000..259d088a26
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.h
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_referencebinding_h
+#define tuscany_sca_model_referencebinding_h
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Binding.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ class ServiceProxy;
+
+
+ namespace model
+ {
+ class Reference;
+ class ServiceBinding;
+
+ /**
+ * Represents a reference binding.
+ * Bindings are used by services and references. References use bindings
+ * to describe the access mechanism used to call an external service (which can
+ * be a service provided by another SCA composite). Services use bindings to describe
+ * the access mechanism that clients (which can be a client from another SCA composite)
+ * have to use to call the service.
+ * This interface will typically be extended by binding implementations to allow
+ * specification of binding/transport specific information.
+ */
+ class ReferenceBinding : public Binding
+ {
+ public:
+
+ /**
+ * Constructor to create a new binding.
+ */
+ SCA_API ReferenceBinding(Reference* reference, const string& uri);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~ReferenceBinding();
+
+ /**
+ * Create a proxy representing the reference to the
+ * client component.
+ */
+ SCA_API virtual ServiceProxy* getServiceProxy() = 0;
+
+ /**
+ * Configure this binding from a service binding.
+ */
+ SCA_API virtual void configure(ServiceBinding* serviceBinding) = 0;
+
+ /**
+ * Returns the reference.
+ * @return The reference.
+ */
+ SCA_API Reference* getReference() const { return reference; };
+
+ private:
+
+ /**
+ * The reference configured with the binding.
+ */
+ Reference* reference;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_referencebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.cpp
new file mode 100644
index 0000000000..cc9b40ca5b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.cpp
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/model/ReferenceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+
+ // Constructor
+ ReferenceType::ReferenceType(ComponentType* componentType, const string& name,
+ Interface* intface, Interface* callbackInterface, Multiplicity multiplicity)
+ : Contract(intface, callbackInterface),
+ componentType(componentType), name(name), multiplicity(multiplicity)
+ {
+ }
+
+ ReferenceType::~ReferenceType()
+ {
+ }
+
+ ReferenceType::Multiplicity ReferenceType::getMultiplicityFromString(const string& multip)
+ {
+ if (multip == "0..1")
+ {
+ return ReferenceType::ZERO_ONE;
+ }
+ else if (multip == "1..1")
+ {
+ return ReferenceType::ONE_ONE;
+ }
+ else if (multip == "0..n")
+ {
+ return ReferenceType::ZERO_MANY;
+ }
+ else if (multip == "1..n")
+ {
+ return ReferenceType::ONE_MANY;
+ }
+ else
+ {
+ return ReferenceType::UNKNOWN;
+ }
+ }
+
+ void ReferenceType::setBinding(Binding* binding)
+ {
+ this->binding = binding;
+ }
+
+ Binding* ReferenceType::getBinding() const
+ {
+ return binding;
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.h
new file mode 100644
index 0000000000..a9d6adc0eb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ReferenceType.h
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_referencetype_h
+#define tuscany_sca_model_referencetype_h
+
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Contract.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ class ComponentType;
+ class Interface;
+ class Binding;
+
+ /**
+ * Represents an SCA reference. SCA references within an implementation represent
+ * links to services that the implementation uses that must be provided by other components
+ * in the SCA system.
+ */
+ class ReferenceType : public Contract
+ {
+ public:
+
+ /**
+ * Multiplicity (how many wires can be connected to this
+ * reference)
+ */
+ enum Multiplicity
+ {
+ ZERO_ONE = 1,
+ ONE_ONE = 2,
+ ZERO_MANY = 3,
+ ONE_MANY = 4,
+ UNKNOWN = 0,
+ };
+
+ /**
+ * Constructor.
+ * @param name The name of the reference.
+ */
+ SCA_API ReferenceType(ComponentType* componentType, const string& name,
+ Interface* intface, Interface* callbackInterface, Multiplicity multiplicity);
+
+ /**
+ * Destructor.
+ */;
+ SCA_API virtual ~ReferenceType();
+
+ /**
+ * Returns the component type on which this reference is defined.
+ * @return The component type on which this reference is defined.
+ */
+ SCA_API ComponentType* getComponentType() const { return componentType; }
+
+ /**
+ * Returns the name of the reference.
+ * @return The name of the reference.
+ */
+ SCA_API const string& getName() const { return name; }
+
+ /**
+ * Returns the multiplicity allowed for wires connected to this reference.
+ * @return The multiplicity allowed for wires connected to this reference
+ */
+ SCA_API Multiplicity getMultiplicity() const { return multiplicity; }
+
+ /**
+ * Returns the binding supported by the reference.
+ * @return The binding supported by the reference.
+ */
+ SCA_API Binding* getBinding() const;
+
+ /**
+ * Sets the binding supported by the reference.
+ * @param binding The binding supported by the reference.
+ */
+ SCA_API void setBinding(Binding* binding);
+
+ /**
+ * Get the multiplicity corresponding to the given
+ * string.
+ */
+ static Multiplicity getMultiplicityFromString(const string& multip);
+
+ private:
+
+ /**
+ * The component type on which this reference is defined.
+ */
+ ComponentType *componentType;
+
+ /**
+ * The name of the reference type.
+ */
+ string name;
+
+ /**
+ * The multiplicity allowed for wires connected to this reference.
+ */
+ Multiplicity multiplicity;
+
+ /**
+ * The binding supported by this reference type.
+ */
+ Binding* binding;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_referencetype_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.cpp
new file mode 100644
index 0000000000..83a2858248
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.cpp
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/model/Service.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ // Constructor
+ Service::Service(Component* component, ServiceType* serviceType)
+ : component(component), type(serviceType), binding(0)
+ {
+ }
+
+ // Destructor
+ Service::~Service()
+ {
+ }
+
+ void Service::setBinding(ServiceBinding* binding)
+ {
+ this->binding = binding;
+ }
+
+ ServiceBinding* Service::getBinding() const
+ {
+ return binding;
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.h
new file mode 100644
index 0000000000..bd632b7a3b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Service.h
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_service_h
+#define tuscany_sca_model_service_h
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ class Component;
+ class ServiceType;
+ class ServiceBinding;
+
+ /**
+ * An addressable instance of a service type associated with a particular component.
+ */
+ class Service
+ {
+ public:
+ /**
+ * Constructor.
+ * @param component The component on which the service is defined.
+ * @param serviceType The service type defining the characteristics of the service.
+ */
+ SCA_API Service(Component* component, ServiceType* serviceType);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Service();
+
+ /**
+ * Returns the component on which this service is defined.
+ * @return The component on which this service is defined.
+ */
+ SCA_API Component* getComponent() const { return component; }
+
+ /**
+ * Returns the service type defining the characteristics of the service.
+ * @return The service type defining the characteristics of the service.
+ */
+ SCA_API ServiceType* getType() const { return type; }
+
+ /**
+ * Returns the binding supported by the service.
+ * @return The binding supported by the service.
+ */
+ SCA_API ServiceBinding* getBinding() const;
+
+ /**
+ * Sets the binding supported by the service.
+ * @param binding The binding supported by the service.
+ */
+ SCA_API void setBinding(ServiceBinding* binding);
+
+ private:
+
+ /**
+ * The component on which this service is defined.
+ */
+ Component* component;
+
+ /**
+ * The service type defining the characteristics of the service.
+ */
+ ServiceType* type;
+
+ /**
+ * The binding supported by this service
+ */
+ ServiceBinding* binding;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_service_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.cpp
new file mode 100644
index 0000000000..b8f1aabb2c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace model
+ {
+
+ // Constructor
+ ServiceBinding::ServiceBinding(Service* service, const string& uri) :
+ Binding(uri), service(service)
+ {
+ }
+
+ // Destructor
+ ServiceBinding::~ServiceBinding()
+ {
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.h
new file mode 100644
index 0000000000..feaa989505
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.h
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_servicebinding_h
+#define tuscany_sca_model_servicebinding_h
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Binding.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ class ServiceWrapper;
+
+ namespace model
+ {
+ class Service;
+
+ /**
+ * Represents a service binding.
+ * Bindings are used by services and references. References use bindings
+ * to describe the access mechanism used to call an external service (which can
+ * be a service provided by another SCA composite). Services use bindings to describe
+ * the access mechanism that clients (which can be a client from another SCA composite)
+ * have to use to call the service.
+ * This interface will typically be extended by binding implementations to allow
+ * specification of binding/transport specific information.
+ */
+ class ServiceBinding : public Binding
+ {
+ public:
+
+ /**
+ * Constructor to create a new binding.
+ */
+ SCA_API ServiceBinding(Service* service, const string& uri);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~ServiceBinding();
+
+ /**
+ * Create a service wrapper handling the interaction
+ * with the service configured with this binding.
+ */
+ SCA_API virtual ServiceWrapper* getServiceWrapper() = 0;
+
+ /**
+ * Returns the service
+ * @return The service.
+ */
+ SCA_API Service* getService() const { return service; };
+
+ private:
+
+ /**
+ * The service configured with the binding.
+ */
+ Service* service;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_servicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.cpp
new file mode 100644
index 0000000000..40ecca2ceb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.cpp
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/model/ServiceType.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+
+ // Constructor
+ ServiceType::ServiceType(ComponentType* componentType, const string& name,
+ Interface* intface, Interface* callbackInterface)
+ : Contract(intface, callbackInterface),
+ componentType(componentType), name(name)
+ {
+ }
+
+ // Destructor
+ ServiceType::~ServiceType()
+ {
+ }
+
+ void ServiceType::setBinding(Binding* binding)
+ {
+ this->binding = binding;
+ }
+
+ Binding* ServiceType::getBinding() const
+ {
+ return binding;
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.h
new file mode 100644
index 0000000000..7b6dd4b97f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/ServiceType.h
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_servicetype_h
+#define tuscany_sca_model_servicetype_h
+
+#include <string>
+using std::string;
+
+#include "tuscany/sca/model/Contract.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ class ComponentType;
+ class Binding;
+ class Interface;
+
+ /**
+ * Represents a service type. Services are used to publish services provided by
+ * implementations, so that they are addressable by other components.
+ */
+ class ServiceType : public Contract
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param componentType The component type on which this service is defined.
+ * @param name The name of the service.
+ */
+ SCA_API ServiceType(ComponentType* componentType, const string& name,
+ Interface* intface, Interface* callbackInterface);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~ServiceType();
+
+ /**
+ * Returns the component type on which this service is defined.
+ * @return The component type on which this service is defined.
+ */
+ SCA_API ComponentType* getComponentType() const { return componentType; }
+
+ /**
+ * Returns the name of the service type.
+ * @return The name of the service type
+ */
+ SCA_API const string& getName() const { return name; }
+
+ /**
+ * Returns the binding supported by this service type.
+ * @return The binding supported by this service type
+ */
+ SCA_API Binding* getBinding() const;
+
+ /**
+ * Sets the binding supported by this service type.
+ * @param binding the binding supported by this service type
+ */
+ SCA_API void setBinding(Binding* binding);
+
+ private:
+
+ /**
+ * The component type on which this service is defined.
+ */
+ ComponentType* componentType;
+
+ /**
+ * The name of the service type.
+ */
+ string name;
+
+ /**
+ * The binding supported by this service
+ */
+ Binding* binding;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_servicetype_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp
new file mode 100644
index 0000000000..ac7bf0306b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp
@@ -0,0 +1,448 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/model/WSDLDefinition.h"
+#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Exceptions.h"
+
+using namespace tuscany::sca;
+
+using namespace commonj::sdo;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+
+ // Constructor
+ WSDLDefinition::WSDLDefinition(DataObjectPtr wsdlModel)
+ : wsdlModel(wsdlModel)
+ {
+ LOGENTRY(1, "WSDLDefinition::constructor");
+
+ // Trace
+ //Utils::printDO(wsdlModel);
+
+ LOGEXIT(1, "WSDLDefinition::constructor");
+ }
+
+ WSDLDefinition::~WSDLDefinition()
+ {
+ }
+
+
+ ///
+ /// The namespace of the service and other definitions defined in this wsdl definition
+ string WSDLDefinition::getNamespace()
+ {
+ return wsdlModel->getCString("targetNamespace");
+ }
+
+ ///
+ /// Find the operation defined in this wsdl
+ ///
+ const WSDLOperation& WSDLDefinition::findOperation(const string& serviceName,
+ const string& portName,
+ const string& operationName)
+ {
+ string message;
+
+ string operationKey = serviceName+"#"+portName+"#"+operationName;
+ OperationMap::iterator iter = operationMap.find(operationKey);
+ if (iter != operationMap.end())
+ {
+ return iter->second;
+ }
+
+ // Find the service
+ DataObjectPtr service = findService(serviceName);
+ if (!service)
+ {
+ // Service not found
+ message = "Unable to find service ";
+ message = message + serviceName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+ else
+ {
+
+
+ // Found the service
+ DataObjectList& portList = service->getList("port");
+ for (int j=0; j<portList.size();j++)
+ {
+ string portListName(portList[j]->getCString("name"));
+ if (portListName.compare(portName) == 0)
+ {
+ // found port
+ // Add address at this point
+ string targetAddress(portList[j]->getCString("address/location"));
+
+ // find operation by traversing the binding, portType then operation
+ string wsBindingName(portList[j]->getCString("binding"));
+
+ DataObjectPtr wsBinding = findBinding(wsBindingName);
+ if (!wsBinding)
+ {
+ message = "Unable to find binding ";
+ message = message + wsBindingName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+
+ string soapAction = "";
+ bool documentStyle = true;
+ bool wrappedStyle = true;
+ bool useEncoded = false;
+ WSDLOperation::soapVersion soapVer = WSDLOperation::SOAP11;
+
+ // Find the binding operation
+ DataObjectList& bindingOperationList = wsBinding->getList("operation");
+ for (int i=0; i<bindingOperationList.size(); i++)
+ {
+ string name(bindingOperationList[i]->getCString("name"));
+
+ if (name.compare(operationName) == 0)
+ {
+ DataObjectPtr op = bindingOperationList[i]->getDataObject("operation");
+ string opType = op->getType().getURI();
+ if (opType == "http://schemas.xmlsoap.org/wsdl/soap12/")
+ {
+ soapVer = WSDLOperation::SOAP12;
+ }
+
+ // Get the soapAction
+ soapAction = bindingOperationList[i]->getCString("operation/soapAction");
+
+ // Get the style
+ string style = bindingOperationList[i]->getCString("operation/style");
+ if (style == "")
+ {
+ style = wsBinding->getCString("binding/style");
+ }
+ if (style != "document")
+ {
+ documentStyle = false;
+ wrappedStyle = false;
+ }
+
+ // get the use
+ string use = bindingOperationList[i]->getCString("input/body/use");
+ if (use == "encoded")
+ {
+ useEncoded = true;
+ }
+ }
+ }
+
+
+ // TODO - get the style from the binding or operation????
+
+ // Found the binding, get the portType
+ string wsPortTypeName(wsBinding->getCString("type"));
+ DataObjectPtr wsPortType = findPortType(wsPortTypeName);
+ if (!wsPortType)
+ {
+ message = "Unable to find PortType ";
+ message = message + wsPortTypeName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ //Utils::printDO(wsPortType);
+
+ // Found the portType, find the operation
+ DataObjectList& operationList = wsPortType->getList("operation");
+ for (int k=0; k< operationList.size(); k++)
+ {
+ string opName(operationList[k]->getCString("name"));
+ if( opName.compare(operationName) == 0)
+ {
+ // Found the operation
+
+ // Find the type of the request message
+ string inputMessageType = string(operationList[k]->getCString("input/message"));
+
+ DataObjectPtr wsMessageIn = findMessage(inputMessageType);
+ if (!wsMessageIn)
+ {
+ message = "Unable to find message ";
+ message = message + inputMessageType;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ string requestType(wsMessageIn->getList("part")[0]->getCString("element"));
+
+ // Find the type of the response message
+ string outputMessageType = string(operationList[k]->getCString("output/message"));
+
+ DataObjectPtr wsMessageOut = findMessage(outputMessageType);
+ if (!wsMessageOut)
+ {
+ message = "Unable to find message ";
+ message = message + outputMessageType;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ string responseType(wsMessageOut->getList("part")[0]->getCString("element"));
+
+ WSDLOperation& wsdlOp = operationMap[operationKey];
+ wsdlOp.setOperationName(operationName);
+ wsdlOp.setSoapAction(soapAction);
+ wsdlOp.setEndpoint(targetAddress);
+ wsdlOp.setSoapVersion(soapVer);
+ wsdlOp.setDocumentStyle(documentStyle);
+ wsdlOp.setWrappedStyle(wrappedStyle);
+ wsdlOp.setEncoded(useEncoded);
+ wsdlOp.setInputType(requestType);
+ wsdlOp.setOutputType(responseType);
+ return wsdlOp;
+ }
+
+ }
+
+ message = "Unable to find Operation ";
+ message = message + operationName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+ }
+ // cannot find the port
+ message = "Unable to find port ";
+ message = message + portName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ }
+
+ ///
+ /// Find the operation defined in this wsdl
+ ///
+ const WSDLOperation& WSDLDefinition::findOperation(const string& portTypeName,
+ const string& operationName)
+ {
+ string operationKey = portTypeName+"#"+operationName;
+ OperationMap::iterator iter = operationMap.find(operationKey);
+ if (iter != operationMap.end())
+ {
+ return iter->second;
+ }
+
+ string soapAction = getNamespace() + "#" + operationName;
+ bool documentStyle = true;
+ bool wrappedStyle = true;
+ bool useEncoded = false;
+ WSDLOperation::soapVersion soapVer = WSDLOperation::SOAP11;
+
+ // Get the portType
+ DataObjectPtr wsPortType = findPortType(portTypeName);
+ if (!wsPortType)
+ {
+ string message = "Unable to find PortType ";
+ message = message + portTypeName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ //Utils::printDO(wsPortType);
+
+ // Found the portType, find the operation
+ DataObjectList& operationList = wsPortType->getList("operation");
+ for (int k=0; k< operationList.size(); k++)
+ {
+ string opName(operationList[k]->getCString("name"));
+ if( opName.compare(operationName) == 0)
+ {
+ // Found the operation
+
+ // Find the type of the request message
+ string inputMessageType = string(operationList[k]->getCString("input/message"));
+
+ DataObjectPtr wsMessageIn = findMessage(inputMessageType);
+ if (!wsMessageIn)
+ {
+ string message = "Unable to find message ";
+ message = message + inputMessageType;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ string requestType(wsMessageIn->getList("part")[0]->getCString("element"));
+
+ // Find the type of the response message
+ string outputMessageType = string(operationList[k]->getCString("output/message"));
+
+ DataObjectPtr wsMessageOut = findMessage(outputMessageType);
+ if (!wsMessageOut)
+ {
+ string message = "Unable to find message ";
+ message = message + outputMessageType;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+ }
+
+ string responseType(wsMessageOut->getList("part")[0]->getCString("element"));
+
+ WSDLOperation& wsdlOp = operationMap[operationKey];
+ wsdlOp.setOperationName(operationName);
+ wsdlOp.setSoapAction(soapAction);
+ wsdlOp.setEndpoint("");
+ wsdlOp.setSoapVersion(soapVer);
+ wsdlOp.setDocumentStyle(documentStyle);
+ wsdlOp.setWrappedStyle(wrappedStyle);
+ wsdlOp.setEncoded(useEncoded);
+ wsdlOp.setInputType(requestType);
+ wsdlOp.setOutputType(responseType);
+ return wsdlOp;
+ }
+ }
+
+ string message = "Unable to find Operation ";
+ message = message + operationName;
+ message = message + " in the WSDL definition";
+ throw SystemConfigurationException(message.c_str());
+
+ }
+
+ ///
+ /// Find a service
+ ///
+ DataObjectPtr WSDLDefinition::findService(const string& serviceName)
+ {
+ DataObjectPtr service = 0;
+
+
+ // Find the binding
+ DataObjectList& serviceList = wsdlModel->getList("service");
+ for (int i=0; i<serviceList.size(); i++)
+ {
+ string name(serviceList[i]->getCString("name"));
+
+ if (name.compare(serviceName) == 0)
+ {
+ return serviceList[i];
+ }
+ }
+
+ return service;
+ }
+
+
+ ///
+ /// Find a named binding
+ ///
+ DataObjectPtr WSDLDefinition::findBinding(const string& bindingName)
+ {
+ DataObjectPtr binding = 0;
+ string uri;
+ string name;
+
+
+ //Utils::tokeniseQName(bindingName, uri, name);
+ Utils::rTokeniseString(":", bindingName, uri, name);
+
+
+ // Find the binding
+ DataObjectList& bindingList = wsdlModel->getList("binding");
+ for (int i=0; i<bindingList.size(); i++)
+ {
+ string nameBinding(bindingList[i]->getCString("name"));
+
+ if (nameBinding.compare(name) == 0)
+ {
+ return bindingList[i];
+ }
+ }
+
+ return binding;
+ }
+
+ ///
+ /// Find a named portType
+ ///
+ DataObjectPtr WSDLDefinition::findPortType(const string& portTypeName)
+ {
+ DataObjectPtr portType = 0;
+ string uri;
+ string name;
+
+
+ // Utils::tokeniseQName(portTypeName, uri, name);
+ Utils::rTokeniseString(":", portTypeName, uri, name);
+
+
+ // Find the binding
+ DataObjectList& portTypeList = wsdlModel->getList("portType");
+ for (int i=0; i<portTypeList.size(); i++)
+ {
+ string namePortType(portTypeList[i]->getCString("name"));
+
+ if (namePortType.compare(name) == 0)
+ {
+ return portTypeList[i];
+ }
+ }
+
+ return portType;
+ }
+
+ ///
+ /// Find a named message
+ ///
+ DataObjectPtr WSDLDefinition::findMessage(const string& messageName)
+ {
+ DataObjectPtr message = 0;
+ string uri;
+ string name;
+
+
+ // Utils::tokeniseQName(messageName, uri, name);
+ Utils::rTokeniseString(":", messageName, uri, name);
+
+
+ // Find the binding
+ DataObjectList& messageList = wsdlModel->getList("message");
+ for (int i=0; i<messageList.size(); i++)
+ {
+ string nameMessage(messageList[i]->getCString("name"));
+
+ if (nameMessage.compare(name) == 0)
+ {
+ return messageList[i];
+ }
+ }
+
+ return message;
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.h
new file mode 100644
index 0000000000..1f07294dcb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.h
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_wsdldefinition_h
+#define tuscany_sca_model_wsdldefinition_h
+
+#include "tuscany/sca/model/WSDLOperation.h"
+
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+#include "commonj/sdo/SDO.h"
+using commonj::sdo::DataObjectPtr;
+
+#include <map>
+using std::map;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ class WSDLOperation;
+
+ /**
+ * Holds information about a WSDL definition loaded into the runtime.
+ */
+ class WSDLDefinition
+ {
+ public:
+ /**
+ * Constructor.
+ * @param wsdlModel The data object representing the WSDL document
+ * defining a web service.
+ */
+ SCA_API WSDLDefinition(DataObjectPtr wsdlModel);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~WSDLDefinition();
+
+
+ /**
+ * Returns the target namespace of the WSDL definitions.
+ * @return The target namespace.
+ */
+ SCA_API string getNamespace(void);
+
+ /**
+ * Find an operation in the WSDL definitions.
+ * @param serviceName The name of the service on which this
+ * operation is defined.
+ * @param portName The name of the port in the service to
+ * use.
+ * @param operationName The name of the operation to find.
+ * @return The operation if found. Exception thrown if not found.
+ */
+ SCA_API const WSDLOperation& findOperation(const string& serviceName,
+ const string& portName,
+ const string& operationName);
+
+ /**
+ * Find an operation in the WSDL definitions.
+ * @param portTypeName The name of the portType on which this
+ * operation is defined.
+ * @param operationName The name of the operation to find.
+ * @return The operation if found. Exception thrown if not found.
+ */
+ SCA_API const WSDLOperation& findOperation(const string& portTypeName,
+ const string& operationName);
+
+ private:
+
+ /**
+ * Find a service in the wsdl definition.
+ * @param serviceName The name of the service.
+ * @return A data object describing the service if found, otherwise
+ * a 0 if not found.
+ */
+ DataObjectPtr findService(const string& serviceName);
+
+ /**
+ * Find a binding in the wsdl definition.
+ * @param bindingName The name of the binding to find.
+ * @return A data object describing the binding if found, otherwise
+ * a 0 if not found.
+ */
+ DataObjectPtr findBinding(const string& bindingName);
+
+ /**
+ * Find a portType in the wsdl definition.
+ * @param portTypeName The name of the portType.
+ * @return A data object describing the portType if found, otherwise
+ * a 0 if not found.
+ */
+ DataObjectPtr findPortType(const string& portTypeName);
+
+ /**
+ * Find a message in the wsdl definition.
+ * @param messageName The name of the message.
+ * @return A data object describing the message if found, otherwise
+ * a 0 if not found.
+ */
+ DataObjectPtr findMessage(const string& messageName);
+
+
+ /**
+ * The data object representation of the WSDL document.
+ */
+ DataObjectPtr wsdlModel;
+
+ typedef map<string, WSDLOperation> OperationMap;
+ OperationMap operationMap;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_wsdldefinition_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.cpp
new file mode 100644
index 0000000000..1b7aed525c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.cpp
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/WSDLInterface.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ const string WSDLInterface::typeQName("http://www.osoa.org/xmlns/sca/1.0#WSDLPortType");
+
+ // Constructor
+ WSDLInterface::WSDLInterface(
+ const string& qname, bool remotable, bool conversational)
+ : Interface(remotable, conversational)
+ {
+ parse(qname);
+ }
+
+ void WSDLInterface::parse(const string& qname)
+ {
+ // PortType is of the form: <wsdl-namepace-uri>#wsdl.interface(<portType-name>)
+ string::size_type hash = qname.find("#");
+ if (hash != string::npos)
+ {
+ // Found a hash
+
+ // Namepace is the part before the #
+ namespaceURI = qname.substr(0, hash);
+
+ if ( (hash+1) < qname.length())
+ {
+ // Check the next part is wsdl.interface(
+ int ending = hash+16;
+ string check = qname.substr(hash+1, 15);
+ if (check.compare("wsdl.interface(") == 0)
+ {
+ // Find the matching )
+ int endBracket = qname.find(")",ending);
+ if (endBracket-1 > ending+1)
+ {
+ name = qname.substr(ending, endBracket-ending);
+ }
+ else
+ {
+ // Nothing between the ()
+ name = "";
+ }
+ }
+ else
+ {
+ // not the correct characters after the #, ignore the rest
+ name = "";
+ }
+
+ }
+ else
+ {
+ // Nothing after the hash
+ name = "";
+ }
+ }
+ else
+ {
+ // No hash at all
+ namespaceURI = qname;
+ name = "";
+ }
+ }
+
+
+ WSDLInterface::~WSDLInterface()
+ {
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.h
new file mode 100644
index 0000000000..e59453e3f2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.h
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_wsdlinterface_h
+#define tuscany_sca_model_wsdlinterface_h
+
+#include "tuscany/sca/model/Interface.h"
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ /**
+ * Holds information about an interface described using a WSDL
+ * port type.
+ */
+ class WSDLInterface : public Interface
+ {
+
+ public:
+ /**
+ * Constuctor.
+ * @param interfaceName Name of the WSDL interface.
+ */
+ WSDLInterface(const string& qname, bool remotable, bool conversational);
+
+ /**
+ * Destructor.
+ */
+ virtual ~WSDLInterface();
+
+ /**
+ * Returns the WSDL namespace
+ */
+ string getNamespaceURI() const { return namespaceURI; }
+
+ /**
+ * Returns the interface name
+ */
+ string getName() const { return name; }
+
+ /**
+ * return the QName of the schema type for this interface type
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#interface.cpp")
+ */
+ virtual const string& getInterfaceTypeQName() { return typeQName; };
+
+ /**
+ * The QName of the schema type for this interface type.
+ */
+ SCA_API static const string typeQName;
+
+ private:
+
+ /**
+ * Parse the WSDL qname
+ */
+ void parse(const string& qname);
+
+ /**
+ * WSDL namespace.
+ */
+ string namespaceURI;
+
+ /**
+ * Name of the WSDL interface.
+ */
+ string name;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_wsdlinterface_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp
new file mode 100644
index 0000000000..264286caf3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+
+ // Constructor
+ WSDLOperation::WSDLOperation()
+ {
+ LOGENTRY(1, "WSDLOperation::constructor");
+ LOGEXIT(1, "WSDLOperation::constructor");
+ }
+
+ WSDLOperation::~WSDLOperation()
+ {
+ }
+
+
+ void WSDLOperation::setInputType(const string& inputType)
+ {
+ Utils::tokeniseQName(inputType, inputTypeUri, inputTypeName);
+ }
+
+ void WSDLOperation::setOutputType(const string& outputType)
+ {
+ Utils::tokeniseQName(outputType, outputTypeUri, outputTypeName);
+ }
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h
new file mode 100644
index 0000000000..371c67a6da
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_wsdloperation_h
+#define tuscany_sca_model_wsdloperation_h
+#include "tuscany/sca/export.h"
+#include <string>
+using std::string;
+
+
+#include "commonj/sdo/SDO.h"
+using commonj::sdo::DataObjectPtr;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ /**
+ * Represents a single.,bound WSDL defined operation.
+ * This class includes information from the soapBinding
+ * in addition to the WSDL definition of the operation.
+ */
+ class WSDLOperation
+ {
+ 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();
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~WSDLOperation();
+
+ /**
+ * Return the name of the operation for use when serializing an
+ * outgoing message.
+ * @return The name of the element in the request message.
+ */
+ SCA_API const string& getOperationName() const {return operationName;}
+ SCA_API void setOperationName(const string& opName) {operationName = opName;}
+
+ /**
+ * The soap action string for this operation.
+ * @return The soap action.
+ */
+ SCA_API const string& getSoapAction() const {return soapAction;}
+ SCA_API void setSoapAction(const string& soapAct) {soapAction = soapAct;}
+
+ /**
+ * Return the endpoint address for the target web service.
+ * @return The endpoint address.
+ */
+ SCA_API const string& getEndpoint() const {return endpoint;}
+ SCA_API void setEndpoint(const string& ep) {endpoint = ep;}
+
+ enum soapVersion
+ {
+ SOAP11,
+ SOAP12
+ };
+
+ SCA_API void setSoapVersion(soapVersion ver) {soapVer = ver;}
+ SCA_API soapVersion getSoapVersion() const {return soapVer;}
+
+ SCA_API void setDocumentStyle(bool docStyle) {documentStyle = docStyle;}
+ SCA_API bool isDocumentStyle() const {return documentStyle;}
+
+ 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 setInputType(const string& inputType);
+ SCA_API const string& getInputTypeUri() const {return inputTypeUri;}
+ SCA_API const string& getInputTypeName() const {return inputTypeName;}
+ SCA_API void setOutputType(const string& outputType);
+ SCA_API const string& getOutputTypeUri() const {return outputTypeUri;}
+ SCA_API const string& getOutputTypeName() const {return outputTypeName;}
+
+ private:
+ /**
+ * The name of the operation for use when serializing an
+ * outgoing message.
+ */
+ string operationName;
+
+ /**
+ * The soap action string for this operation.
+ */
+ string soapAction;
+
+ /**
+ * The endpoint address of the target web service.
+ */
+ string endpoint;
+
+ bool documentStyle;
+ bool wrappedStyle;
+ bool encoded;
+ soapVersion soapVer;
+
+ string inputTypeUri;
+ string inputTypeName;
+
+ string outputTypeUri;
+ string outputTypeName;
+
+ DataObjectPtr inputMessage;
+ DataObjectPtr outputMessage;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_wsdloperation_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.cpp
new file mode 100644
index 0000000000..77caae53a2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.cpp
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/Wire.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+
+ // Constructor
+ Wire::Wire(const std::string& source, const std::string& targ)
+ {
+ Utils::tokeniseUri(source, sourceComponent, sourceReference);
+ target = targ;
+ }
+
+ Wire::~Wire()
+ {
+ }
+
+ } // End namespace model
+
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.h
new file mode 100644
index 0000000000..707ac5da0e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/model/Wire.h
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_model_wire_h
+#define tuscany_sca_model_wire_h
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace model
+ {
+ /**
+ * Information about a wire in the model.
+ */
+ class Wire
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param source The source of the wire. Either the component and
+ * reference name (optional) or an entry point.
+ * @param target The target of the wire. Either a component and service
+ * service name (optional) or an external sevice.
+ */
+ SCA_API Wire(const string& source, const string& target);
+
+ /**
+ * Destructor.
+ */
+ SCA_API virtual ~Wire();
+
+ /**
+ * Get the component name defined by the source of the wire.
+ * @return The component name which is the source of the wire.
+ */
+ SCA_API const string& getSourceComponent() const { return sourceComponent; }
+
+ /**
+ * Get the reference name defined by the source of the wire.
+ * @return The reference name which is the source of the wire.
+ */
+ SCA_API const string& getSourceReference() const { return sourceReference; }
+
+ /**
+ * Get the target uri defined by the target of the wire.
+ * @return The target uri which is the source of the wire.
+ */
+ SCA_API const string& getTarget() { return target; }
+
+ private:
+ /**
+ * The source component of the wire.
+ */
+ string sourceComponent;
+
+ /**
+ * The source reference of the wire.
+ */
+ string sourceReference;
+
+ /**
+ * The target uri of the wire.
+ */
+ string target;
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_model_wire_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.cpp
new file mode 100644
index 0000000000..7b0b535523
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.cpp
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/DefaultLogWriter.h"
+#include <iostream>
+using namespace std;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ DefaultLogWriter::~DefaultLogWriter()
+ {
+ }
+
+ void DefaultLogWriter::log(int level, const char* msg)
+ {
+ for (int i=0; i < level; i++)
+ {
+ cout << " ";
+ }
+ cout << msg <<endl;
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.h
new file mode 100644
index 0000000000..2c797010d0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.h
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_defaultlogwriter_h
+#define tuscany_sca_util_defaultlogwriter_h
+
+#include "tuscany/sca/util/LogWriter.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Log writer to write out to standard out.
+ */
+ class DefaultLogWriter : public LogWriter
+ {
+ public:
+ virtual ~DefaultLogWriter();
+
+ /**
+ * Will write to the console.
+ * See LogWriter#log.
+ */
+ virtual void log(int level, const char* msg);
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_defaultlogwriter_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.cpp
new file mode 100644
index 0000000000..d8f86e0147
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.cpp
@@ -0,0 +1,213 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/util/Logging.h"
+using namespace std;
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ // ========================================================================
+ // Constructor
+ // ========================================================================
+ TuscanyRuntimeException :: TuscanyRuntimeException(const char* name,
+ severity_level sev,
+ const char* msg_text)
+ : severity(sev), location_set(0)
+ {
+ class_name = new char[strlen(name) + 1];
+ strcpy(class_name,name);
+ message_text = new char[strlen(msg_text)+1];
+ strcpy(message_text,msg_text);
+ LOGERROR_2(1, "%s raised: %s", class_name, message_text);
+
+ } // end TuscanyRuntimeException constuctor
+
+ // ========================================================================
+ // Constructor
+ // ========================================================================
+ TuscanyRuntimeException :: TuscanyRuntimeException(const TuscanyRuntimeException& c)
+ :
+ severity(c.getSeverity()), location_set(c.location_set)
+
+ {
+ class_name = new char[strlen(c.getEClassName()) + 1];
+ strcpy(class_name, c.getEClassName());
+ message_text = new char[strlen(c.getMessageText())+1];
+ strcpy(message_text,c.getMessageText());
+ for (int i=0;i<c.location_set;i++)
+ {
+ locations[i].file = new char[strlen(c.locations[i].file) + 1];
+ strcpy(locations[i].file,c.locations[i].file);
+ locations[i].line = c.locations[i].line;
+ locations[i].function = new char[strlen(c.locations[i].function) + 1];
+ strcpy(locations[i].function, c.locations[i].function);
+ }
+ LOGERROR_2(1, "%s raised: %s", class_name, message_text);
+ }
+
+ // ========================================================================
+ // Destructor
+ // ========================================================================
+ TuscanyRuntimeException :: ~TuscanyRuntimeException()
+ {
+ if (class_name) delete class_name;
+ if (message_text) delete message_text;
+ for (int i=0;i<location_set;i++)
+ {
+ if (locations[i].file) delete locations[i].file;
+ if (locations[i].function) delete locations[i].function;
+ }
+
+ } // end TuscanyRuntimeException destructor
+
+ // ========================================================================
+ // Return class name of this exception
+ // ========================================================================
+ const char* TuscanyRuntimeException :: getEClassName() const
+ {
+ return class_name;
+ } // end getClassName()
+
+ // ========================================================================
+ // Return severity
+ // ========================================================================
+ TuscanyRuntimeException::severity_level TuscanyRuntimeException :: getSeverity() const
+ {
+ return severity;
+ } // end getSeverity()
+
+ // ========================================================================
+ // Return message text associated with exception
+ // ========================================================================
+ const char* TuscanyRuntimeException :: getMessageText() const
+ {
+ return message_text;
+ } // end getMessageText()
+
+ // ========================================================================
+ // Return file name where exception was raised
+ // ========================================================================
+ const char* TuscanyRuntimeException :: getFileName() const
+ {
+ return locations[0].file;
+ } // end getFileName()
+
+ // ========================================================================
+ // Return line number where exception was raised
+ // ========================================================================
+ unsigned long TuscanyRuntimeException :: getLineNumber() const
+ {
+ return locations[0].line;
+ } // end getLineNumber()
+
+ // ========================================================================
+ // Return function name where exception was raised
+ // ========================================================================
+ const char* TuscanyRuntimeException :: getFunctionName() const
+ {
+ return locations[0].function;
+ } // end getFunctionName()
+
+
+ // ========================================================================
+ // set severity of exception
+ // ========================================================================
+ void TuscanyRuntimeException :: setSeverity(severity_level sev)
+ {
+ severity = sev;
+ } // end setSeverity(severity_level sev) const
+
+ // ========================================================================
+ // set message text associated with exception
+ // ========================================================================
+ void TuscanyRuntimeException :: setMessageText(const char* msg_text)
+ {
+ if (message_text != 0) delete message_text;
+ message_text = new char[strlen(msg_text) + 1];
+ strcpy(message_text,msg_text);
+ } // end setMessageText(const string &msg_text) const
+
+ // ========================================================================
+ // set location of most recent throw/handling of the exception
+ // ========================================================================
+ void TuscanyRuntimeException :: setLocation(const char* file,
+ unsigned long line,
+ const char* function)
+ {
+ if (location_set < num_locations)
+ {
+ locations[location_set].file = new char[strlen(file) + 1];
+ strcpy(locations[location_set].file,file);
+ locations[location_set].line = line;
+ locations[location_set].function = new char[strlen(function) + 1];
+ strcpy(locations[location_set].function,function);
+
+ location_set++;
+ }
+ } // end setLocation()
+
+
+ // ========================================================================
+ // print self
+ // ========================================================================
+ ostream& TuscanyRuntimeException :: PrintSelf(ostream &os) const
+ {
+
+ os << "Exception object :" << endl;
+ os << " class: " << class_name << endl;
+ os << " description: " << message_text << endl;
+ if (location_set != 0)
+ {
+ os << " file name: " << locations[0].file << endl;
+ char lineNumber[100];
+ sprintf(lineNumber, "%lu",locations[0].line);
+ os << " line number: " << lineNumber << endl;
+ os << " function: " << locations[0].function << endl;
+ os << " location history:" << endl;
+
+ int i=1;
+ while (i < location_set)
+ {
+ os << " " << i << ")" << endl;
+ os << " file: " << locations[i].file << endl;
+ os << " line: " << locations[i].line << endl;
+ os << " function: " << locations[i].function << endl;
+ i++;
+ }
+ }
+ return os;
+ } // end ostream operator <<
+
+ // ========================================================================
+ // ostream operator <<
+ // ========================================================================
+ SCA_API ostream& operator<< (ostream &os, const TuscanyRuntimeException &except)
+ {
+ return except.PrintSelf(os);
+ } // end ostream operator <<
+
+
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.h
new file mode 100644
index 0000000000..16188ed550
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Exceptions.h
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_exceptions_h
+#define tuscany_sca_util_exceptions_h
+
+
+#include "tuscany/sca/export.h"
+
+#include <ostream>
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Top level exception to represent all the exceptions that may be
+ * thrown by an SCA runtime implementation.
+ */
+ class SCA_API TuscanyRuntimeException
+ {
+ public:
+ /**
+ * Represents the possible severity levels for an exception.
+ */
+ enum severity_level
+ {
+ Normal,
+ Warning,
+ Error,
+ Severe
+ };
+
+ /**
+ * Constructor.
+ * @param name Class name of the exception.
+ * @param sev Severity level.
+ * @param msg_text Detailed description of the exception.
+ */
+ TuscanyRuntimeException(
+ const char *name="TuscanyRuntimeException",
+ severity_level sev=Severe,
+ const char* msg_text="");
+
+ TuscanyRuntimeException(const TuscanyRuntimeException& c);
+
+ // Destructor
+ virtual ~TuscanyRuntimeException();
+
+ /**
+ * Return class name of this exception.
+ */
+ const char* getEClassName() const;
+
+ /**
+ * Return severity.
+ */
+ severity_level getSeverity() const;
+
+ /**
+ * Return message text associated with exception.
+ */
+ const char* getMessageText() const;
+
+ /*
+ * Return file name where the exception was raised.
+ */
+ const char* getFileName() const;
+
+ /**
+ * Return line number where the exception was raised.
+ */
+ unsigned long getLineNumber() const;
+
+ /**
+ * Return function name where the exception was raised.
+ */
+ const char* getFunctionName() const;
+
+ /**
+ * Set the exception severity.
+ */
+ void setSeverity(severity_level sev);
+
+ /**
+ * Set the message text associated with exception.
+ */
+ void setMessageText(const char* msg_text);
+
+ /**
+ * Set the location where the exception was raised.
+ * @param file Name of the file.
+ * @param line Line number in the file.
+ * @param function Name of the function.
+ */
+ void setLocation(const char* file,
+ unsigned long line,
+ const char* function="");
+
+ /**
+ * Append exception details to ostream.
+ */
+ virtual std::ostream& PrintSelf(std::ostream &os) const;
+
+ /**
+ * Operator to send exceptions details to a stream.
+ */
+ SCA_API friend std::ostream& operator<< (std::ostream &os, const TuscanyRuntimeException &except);
+ protected:
+
+ private:
+ /**
+ * Class name of the exception.
+ */
+ char* class_name;
+
+ /**
+ * Severity level of the exception.
+ */
+ severity_level severity;
+
+ /**
+ * Description of the exception.
+ */
+ char* message_text; // Description of exception
+
+ /**
+ * Location where the exception was thrown or handled and thrown.
+ */
+ class location
+ {
+ public:
+ char* file; // File name (from __FILE__)
+ unsigned long line; // Line number (from __LINE__)
+ char* function; // Function name
+ };
+
+
+ enum {num_locations=5};
+ /**
+ * Array of locations where the exception has been handled and thrown.
+ */
+ location locations[num_locations];
+
+ /**
+ * The current location (index into TuscanyRuntimeException#location).
+ */
+ int location_set;
+
+
+ }; // End TuscanyRuntimeException class definition
+
+
+ /**
+ * Indicates a problem in the consistency of the SCA model provided to the
+ * Tuscany runtime.
+ */
+ class SCA_API SystemConfigurationException: public TuscanyRuntimeException
+ {
+ public:
+ SystemConfigurationException(const char* msg)
+ : TuscanyRuntimeException("SystemConfigurationException", Severe,
+ msg)
+ {
+ }
+ private:
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_exceptions_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.cpp
new file mode 100644
index 0000000000..20066a09e0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.cpp
@@ -0,0 +1,224 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "tuscany/sca/util/File.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include <iostream>
+
+#include <string>
+#include <iostream>
+using namespace std;
+
+#if defined(WIN32) || defined (_WINDOWS)
+#include <windows.h>
+#else
+#include <unistd.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#endif
+
+namespace tuscany
+{
+ namespace sca
+ {
+ File::File(const string& dir, const string& file)
+ : directory(dir), fileName(file)
+ {
+ }
+ File::~File()
+ {
+ }
+
+
+ Files::Files(const string& rootDir, const string& pattern, bool subdirectories)
+ : rootDirectory(rootDir)
+ {
+ findFiles(rootDirectory, pattern, subdirectories);
+ }
+
+ Files::~Files()
+ {
+ }
+
+ unsigned int Files::size()
+ {
+ return files.size();
+ }
+
+ const File& Files::operator[] (unsigned int index)
+ {
+ if (size() <= index)
+ {
+ throw SystemConfigurationException("Files::operator[] index out of bounds");
+ }
+
+ FILES::iterator iter = files.begin();
+ for (unsigned int i=0; i<index; i++)
+ {
+ iter++;
+ }
+
+ return *iter;
+ }
+
+
+ void Files::findFiles(const string& rootDir, const string& pattern, bool subdirectories)
+ {
+
+#if defined(WIN32) || defined (_WINDOWS)
+ char currentDir[ _MAX_FNAME];
+
+
+ GetCurrentDirectory(_MAX_FNAME, currentDir);
+
+ // Set current directory, from which to search.
+ if (!SetCurrentDirectory(rootDir.c_str()))
+ {
+ cout << "Unable to set current directory to: " << rootDir.c_str() << endl;
+ return;
+ }
+ char fullDirname[ _MAX_FNAME];
+ GetCurrentDirectory(_MAX_FNAME, fullDirname);
+
+ // First, look for all files in this directory that meet the pattern
+ char search[ _MAX_FNAME];
+ strcpy(search, pattern.c_str());
+
+ // Find the first file in the directory
+ WIN32_FIND_DATA data;
+ HANDLE searchHandle = FindFirstFile(search, &data);
+
+ int more = TRUE;
+ if (searchHandle != INVALID_HANDLE_VALUE)
+ {
+ // Found some matching files, so call the function with the details of each one
+ while (more)
+ {
+ // Skip over directories
+ if (!(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ // Add the file to our list
+ files.push_back(File(fullDirname, data.cFileName));
+ }
+
+ more = FindNextFile(searchHandle, &data);
+ }
+ }
+
+
+ if (!subdirectories)
+ return;
+
+ // Now recurse down all the directories
+ // Find the first file in the directory
+ searchHandle = FindFirstFile( "*.*", &data);
+ more = TRUE;
+
+ if (searchHandle != INVALID_HANDLE_VALUE)
+ {
+ // Found some files in the directory.
+ while (more)
+ {
+ // If directory
+ if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ {
+ // Skip over '.' and '..'
+ if ((strcmp(data.cFileName, ".")) && (strcmp("..", data.cFileName)))
+ {
+ // Recurse
+ findFiles(data.cFileName, pattern, subdirectories);
+ }
+ }
+
+ more = FindNextFile(searchHandle, &data);
+ }
+ }
+ SetCurrentDirectory(currentDir);
+#else
+ // Linux
+ //char fullDirname[MAX_PATH];
+ //getcwd(fullDirname, MAX_PATH);
+
+ DIR* root = opendir(rootDir.c_str());
+ if (!root)
+ {
+ cout << "Unable to open directory: " << rootDir.c_str() << endl;
+ return;
+ }
+
+ bool exactMatch = true;
+ string token1, token2;
+ if (pattern.find('*') != string::npos)
+ {
+ exactMatch = false;
+ Utils::tokeniseString("*", pattern, token1, token2);
+ }
+
+ struct dirent *entry=0;
+ while ((entry = readdir(root)))
+ {
+ string entryName = rootDir + "/" + entry->d_name;
+ struct stat statbuf;
+ if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
+ continue;
+ if (stat(entryName.c_str(), &statbuf) != 0)
+ {
+ perror("stat");
+ }
+ else
+ {
+ if (S_ISDIR(statbuf.st_mode))
+ {
+ if (subdirectories)
+ {
+ findFiles(entryName, pattern, subdirectories);
+ }
+ }
+ else if (S_ISREG(statbuf.st_mode))
+ {
+ string filename = entry->d_name;
+
+ if ((exactMatch && filename == pattern) ||
+ (!exactMatch &&
+ ((filename.find(token1) == 0)
+ && (filename.length() >= token2.length())
+ && (filename.rfind(token2) == (filename.length() - token2.length())) )))
+ {
+ // Add the file to our list
+ files.push_back(File(rootDir, filename));
+ }
+ }
+ }
+ }
+ closedir(root);
+#endif
+ }
+
+
+ } // End namespace sca
+} // End namespace tuscany
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.h
new file mode 100644
index 0000000000..a0aef07cf3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/File.h
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_file_h
+#define tuscany_sca_util_file_h
+
+#include <string>
+using std::string;
+#include <vector>
+using std::vector;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * File access methods. Provides platform independent
+ * access to files.
+ */
+ class File
+ {
+ public:
+ /**
+ * Constructor.
+ * @param directory Name of the directory in which this file is located.
+ * Either / or \ can be used interchangeably for separating directory elements.
+ * @param fileName Name of the file in the dirctory.
+ */
+ File(const string& directory, const string& fileName);
+
+ /**
+ * Destructor.
+ */
+ virtual ~File();
+
+ /**
+ * Return the directory in which this file is located.
+ * @return Name of the directory.
+ */
+ const string& getDirectory() const {return directory;}
+
+ /**
+ * Name of the file.
+ * @return Name of the file.
+ */
+ const string& getFileName() const {return fileName;}
+ private:
+ /**
+ * Name of the directory.
+ */
+ string directory;
+
+ /**
+ * Name of the file.
+ */
+ string fileName;
+ };
+
+ /**
+ * Collection of File to provide platform independent access
+ * to files and directories.
+ */
+ class Files
+ {
+ public:
+ /**
+ * Constructor which will search a given directory with a pattern and return a
+ * new instance of this collection class.
+ * @param rootDirectory The directory in which to search.
+ * @param pattern A pattern for matching file names. Can include * and ?.
+ * @param subdirectories Whether subdirectories should be searched too.
+ */
+ Files(const string& rootDirectory, const string& pattern, bool subdirectories = false);
+
+ /**
+ * Destructor.
+ */
+ virtual ~Files();
+
+ /**
+ * Return the number of files found.
+ * @return The number of files found.
+ */
+ unsigned int size();
+
+ /**
+ * Return a File at this position in the collection.
+ * @param index The index into the collection.
+ * @return The File at this index in the collection.
+ */
+ const File& operator[] (unsigned int index);
+
+ private:
+ /**
+ * Search the given directory and pattern for matching files.
+ * @param rootDirectory The directory in which to search.
+ * @param pattern A pattern for matching file names. Can include * and ?.
+ * @param subdirectories Whether subdirectories should be searched too.
+ */
+ void findFiles(const string& rootDirectory, const string& pattern, bool subdirectories);
+
+ /**
+ * The top level directory to search.
+ */
+ string rootDirectory;
+
+ typedef vector<File> FILES;
+
+ /**
+ * Vector of File.
+ */
+ FILES files;
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_file_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.cpp
new file mode 100644
index 0000000000..109d398e1a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.cpp
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/FileLogWriter.h"
+#include <iostream>
+using namespace std;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ FileLogWriter::FileLogWriter(const char* logfile)
+ {
+ logFile.open(logfile, ios_base::app);
+ }
+
+ FileLogWriter::~FileLogWriter()
+ {
+ logFile.close();
+ }
+
+ void FileLogWriter::log(int level, const char* msg)
+ {
+ for (int i=0; i < level; i++)
+ {
+ logFile << " ";
+ }
+ logFile << msg <<endl;
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.h
new file mode 100644
index 0000000000..50d25ee932
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.h
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_filelogwriter_h
+#define tuscany_sca_util_filelogwriter_h
+
+#include "tuscany/sca/util/LogWriter.h"
+#include <iostream>
+#include <fstream>
+using std::ofstream;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Log writer to write out to standard out.
+ */
+ class FileLogWriter : public LogWriter
+ {
+ public:
+ FileLogWriter(const char* logfile);
+
+ virtual ~FileLogWriter();
+
+ /**
+ * Will write to the console.
+ * See LogWriter#log.
+ */
+ virtual void log(int level, const char* msg);
+ private:
+ ofstream logFile;
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_defaultlogwriter_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.cpp
new file mode 100644
index 0000000000..a9ff01b293
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.cpp
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "tuscany/sca/util/Library.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/util/Logging.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ Library::Library()
+ : hDLL(NULL)
+ {
+ }
+
+ Library::Library(const string& libraryName)
+ : name(libraryName), hDLL(NULL)
+ {
+ LOGINFO_1(3, "Library::construcor : %s", name.c_str());
+ load();
+ }
+
+ Library::Library(const Library& lib)
+ : name(lib.name), hDLL(NULL)
+ {
+ LOGINFO_1(3, "Library::copy constructor : %s", name.c_str());
+ if (lib.hDLL)
+ {
+ load();
+ }
+ }
+
+ Library& Library::operator=(const Library& lib)
+ {
+ LOGINFO_1(3, "Library::operator= : %s", name.c_str());
+ if (&lib != this)
+ {
+ unload();
+ name = lib.name;
+ load();
+ }
+ return *this;
+ }
+
+ Library::~Library()
+ {
+ LOGINFO_1(3, "Library::destructor: %s", name.c_str());
+ unload();
+ }
+
+
+ void Library::load()
+ {
+ LOGINFO_1(3, "Library::load : %s", name.c_str());
+ string msg;
+#if defined(WIN32) || defined (_WINDOWS)
+ int l = name.length();
+ string dllName;
+ if (l>=4 && name.substr(l-4, 4)==".dll")
+ {
+ dllName = name;
+ }
+ else
+ {
+ dllName = name+".dll";
+ }
+ hDLL = LoadLibrary(dllName.c_str());
+ if (hDLL == NULL)
+ {
+ msg = "Unable to load library: " + dllName;
+ }
+#else
+ int l = name.length();
+ string soName;
+ if (l>=3 && name.substr(l-3, 3)==".so")
+ {
+ soName = name;
+ }
+ else
+ {
+ int s = name.rfind("/");
+ if (s == name.length())
+ {
+ soName = name + ".so";
+ }
+ else
+ {
+ s++;
+ soName = name.substr(0, s) + "lib" + name.substr(s, name.length()-s) + ".so";
+ }
+ }
+ hDLL = dlopen(soName.c_str(), RTLD_NOW);
+ if (hDLL == NULL)
+ {
+ msg = "Unable to load library: " + soName + ": " + dlerror();
+ }
+#endif
+ if (hDLL == NULL)
+ {
+ LOGERROR(1, msg.c_str());
+ throw SystemConfigurationException(msg.c_str());
+ }
+ }
+
+ void Library::unload()
+ {
+ if (hDLL != NULL)
+ {
+ LOGINFO_1(3, "Library::unload : %s", name.c_str());
+#if defined(WIN32) || defined (_WINDOWS)
+ FreeLibrary(hDLL);
+#else
+ dlclose(hDLL);
+#endif
+ hDLL = NULL;
+ }
+ }
+
+ void* Library::getSymbol(const string& symbol)
+ {
+ LOGINFO_1(3, "Library::getSymbol : %s", symbol.c_str());
+ if (!hDLL)
+ {
+ return 0;
+ }
+#if defined(WIN32) || defined (_WINDOWS)
+ return GetProcAddress(hDLL, symbol.c_str());
+#else
+ return dlsym(hDLL, symbol.c_str());
+#endif
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.h
new file mode 100644
index 0000000000..48b2ad4430
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Library.h
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_library_h
+#define tuscany_sca_util_library_h
+#include "tuscany/sca/export.h"
+
+#if defined(WIN32) || defined (_WINDOWS)
+#include <windows.h>
+#else
+#include <unistd.h>
+#include <dlfcn.h>
+#endif
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Information about shared libraries and methods to
+ * access these shared libraries.
+ */
+ class SCA_API Library
+ {
+ public:
+ Library();
+
+ /**
+ * Constructor. Will load the library.
+ * @param libraryName Fully qualified name of the library.
+ */
+ Library(const string& libraryName);
+
+ /**
+ * Destructor. Will unload the library.
+ */
+ virtual ~Library();
+
+ Library(const Library& lib);
+ Library& operator=(const Library& lib);
+
+ /**
+ * Find an externalized symbol in the library.
+ * @param symbol The name of the symbol to be found.
+ * @return The pointer to the symbol if found, otherwise 0.
+ */
+ void* getSymbol(const string& symbol);
+ private:
+ /**
+ * Name of the library.
+ */
+ string name;
+
+ /**
+ * Handle to the loaded library.
+ */
+#if defined(WIN32) || defined (_WINDOWS)
+ HINSTANCE hDLL;
+#else
+ void* hDLL;
+#endif
+
+ /**
+ * Load the library.
+ */
+ void load();
+
+ /**
+ * Unload the library, if successfully loaded.
+ */
+ void unload();
+
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_util_library_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.cpp
new file mode 100644
index 0000000000..7613e14c4a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.cpp
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/LogWriter.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ LogWriter::~LogWriter()
+ {
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.h
new file mode 100644
index 0000000000..430ce1a785
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/LogWriter.h
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_logwriter_h
+#define tuscany_sca_util_logwriter_h
+
+#include "tuscany/sca/export.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Abstract class for extending logging to other destinations.
+ */
+ class SCA_API LogWriter
+ {
+ public:
+ virtual ~LogWriter();
+
+ /**
+ * Log a message.
+ * @param level The level of logging for this message.
+ * @param msg The message to log.
+ */
+ virtual void log(int level, const char* msg) = 0;
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_logwriter_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.cpp
new file mode 100644
index 0000000000..cdaa3e562b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.cpp
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include <iostream>
+#include <stdarg.h>
+
+#include "tuscany/sca/util/Logger.h"
+#include "tuscany/sca/util/DefaultLogWriter.h"
+#include "tuscany/sca/util/FileLogWriter.h"
+
+using namespace std;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ LogWriter* Logger::logWriter = getLogWriter();
+
+ LogWriter* Logger::getLogWriter()
+ {
+ if (logWriter == 0)
+ {
+ setLogWriter(0);
+ }
+ return logWriter;
+ }
+
+ void Logger::setLogWriter(LogWriter* writer)
+ {
+ if (logWriter != writer
+ && logWriter != 0)
+ {
+ delete logWriter;
+ }
+
+ if (writer == 0)
+ {
+ char* loggingVar = 0;
+ loggingVar = getenv("TUSCANY_SCACPP_LOG");
+ if (loggingVar == 0)
+ logWriter = new DefaultLogWriter;
+ else
+ logWriter = new FileLogWriter(loggingVar);
+ }
+ else
+ {
+ logWriter = writer;
+ }
+ }
+
+ int Logger::loggingLevel = setLogging();
+
+ int Logger::setLogging()
+ {
+ char* loggingVar = 0;
+ loggingVar = getenv("TUSCANY_SCACPP_LOGGING");
+ if (loggingVar == 0)
+ return 0;
+ else
+ return atoi(loggingVar);
+ }
+
+ void Logger::setLogging(int level)
+ {
+ loggingLevel = level;
+ }
+
+ void Logger::log(int level, const char* msg)
+ {
+ if (level <= loggingLevel)
+ {
+ logWriter->log(level, msg);
+ }
+ }
+
+ void Logger::logArgs(int level, const char* msg, ...)
+ {
+ if (level <= loggingLevel)
+ {
+ va_list variableArguments;
+ va_start(variableArguments, msg);
+ char messageBuffer[1024];
+ vsprintf(messageBuffer, msg, variableArguments);
+ logWriter->log(level, messageBuffer);
+ va_end(variableArguments);
+ }
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.h
new file mode 100644
index 0000000000..b0b09adc50
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logger.h
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_logger_h
+#define tuscany_sca_util_logger_h
+
+#include "tuscany/sca/export.h"
+#include "tuscany/sca/util/LogWriter.h"
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Provide a logging interface.
+ */
+ class Logger {
+
+ public:
+ /**
+ * Set the log writer to use.
+ * @param writer The writer to use for all subsequent logging.
+ */
+ SCA_API static void setLogWriter(LogWriter* writer);
+
+ /**
+ * Set or reset the logging level. Any message with a higher logging
+ * level than this value will be filtered (i.e. not shown).
+ * @param level The level of logging to use for all subsequent logging.
+ */
+ SCA_API static void setLogging(int level);
+
+ /**
+ * Log a message.
+ * @param level The log level of this message.
+ * @param msg The message to be logged.
+ */
+ SCA_API static void log(int level, const char* msg);
+
+ /**
+ * Log a message with variable arguments.
+ * @param level The log level of this message.
+ * @param msg The message to be logged. Must include template
+ * characters as described in printf.
+ * @param ... Variable arguments.
+ */
+ SCA_API static void logArgs(int level, const char* msg, ...);
+
+ /**
+ * The currently set logging level
+ */
+ SCA_API static int loggingLevel;
+
+ private:
+ /**
+ * The current log writer.
+ */
+ static LogWriter* logWriter;
+
+ /**
+ * Get the current log writer.
+ * @return The current log writer.
+ */
+ static LogWriter* getLogWriter();
+
+ /**
+ * Retrieves the logging level set as an environment variable.
+ */
+ static int setLogging();
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_logger_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logging.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logging.h
new file mode 100644
index 0000000000..047c653229
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Logging.h
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_logging_h
+#define tuscany_sca_util_logging_h
+
+#include "tuscany/sca/util/Logger.h"
+
+#define LOGENTRY(level, methodName) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::log(level, "Entering: " methodName);
+
+#define LOGEXIT(level, methodName) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::log(level, "Exiting: " methodName);
+
+#define LOGINFO(level, message) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::log(level, message);
+
+#define LOGINFO_1(level, message, arg1) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::logArgs(level, message, arg1);
+
+#define LOGINFO_2(level, message, arg1, arg2) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::logArgs(level, message, arg1, arg2);
+
+#define LOGINFO_3(level, message, arg1, arg2, arg3) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::logArgs(level, message, arg1, arg2, arg3);
+
+#define LOGERROR(level, message) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::log(level, message);
+
+#define LOGERROR_1(level, message, arg1) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::logArgs(level, message, arg1);
+
+#define LOGERROR_2(level, message, arg1, arg2) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::logArgs(level, message, arg1, arg2);
+
+#define LOGERROR_3(level, message, arg1, arg2, arg3) \
+if (tuscany::sca::Logger::loggingLevel >= level) \
+tuscany::sca::Logger::logArgs(level, message, arg1, arg2, arg3);
+
+#endif // tuscany_sca_util_logging_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.cpp
new file mode 100644
index 0000000000..447f498eff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.cpp
@@ -0,0 +1,562 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "tuscany/sca/util/Utils.h"
+
+using namespace std;
+using namespace commonj::sdo;
+namespace tuscany
+{
+ namespace sca
+ {
+ void Utils::tokeniseUri(const string& uri, string& token1, string& token2)
+ {
+ tokeniseString("/", uri, token1, token2);
+ }
+
+ void Utils::tokeniseQName(const string& qname, string& uri, string& name)
+ {
+ tokeniseString("#", qname, uri, name);
+ if (name == "")
+ {
+ name = uri;
+ uri = "";
+ }
+ }
+
+ void Utils::tokeniseString(
+ const string& separator,
+ const string& str,
+ string& token1,
+ string& token2)
+ {
+ string::size_type sep = str.find(separator);
+ if (sep != string::npos)
+ {
+ token1 = str.substr(0, sep);
+ if ( (sep+1) < str.length())
+ {
+ token2 = str.substr(sep+1);
+ }
+ else
+ {
+ token2 = "";
+ }
+ }
+ else
+ {
+ token1 = str;
+ token2 = "";
+ }
+ }
+
+ void Utils::rTokeniseString(
+ const string& separator,
+ const string& str,
+ string& token1,
+ string& token2)
+ {
+ string::size_type sep = str.rfind(separator);
+ if (sep != string::npos)
+ {
+ token1 = str.substr(0, sep);
+ if ( (sep+1) < str.length())
+ {
+ token2 = str.substr(sep+1);
+ }
+ else
+ {
+ token2 = "";
+ }
+ }
+ else
+ {
+ token1 = "";
+ token2 = str;
+ }
+ }
+
+ void Utils::breakpoint() {
+ // dummy method used to set breakpoints
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Print a DatObject tree
+ //////////////////////////////////////////////////////////////////////////
+ void Utils::tabs(int inc)
+ {
+ for (int ind=0; ind <inc; ind++)
+ {
+ cout << " ";
+ }
+ }
+
+ const bool Utils::compareProperties(DataObjectPtr dataObject1, const Property& prop1, DataObjectPtr dataObject2, const Property& prop2, string& diff)
+ {
+ if(strcmp(prop1.getName(),prop2.getName()) != 0)
+ {
+ diff.append("Differing names for Properties:\n");
+ diff.append(prop1.getName());
+ diff.append("\n");
+ diff.append(prop2.getName());
+ return false;
+ }
+
+ const Type& propertyType1 = prop1.getType();
+ const Type& propertyType2 = prop2.getType();
+
+ if(strcmp(propertyType1.getName(), propertyType2.getName()) != 0 ||
+ strcmp(propertyType1.getURI(),propertyType2.getURI()) != 0 )
+ {
+ diff.append("Differing types for Properties:\n");
+ diff.append(propertyType1.getName());
+ diff.append("#");
+ diff.append(propertyType1.getURI());
+ diff.append("\n");
+ diff.append(propertyType2.getName());
+ diff.append("#");
+ diff.append(propertyType2.getURI());
+ return false;
+ }
+ if (dataObject1->isSet(prop1) != dataObject2->isSet(prop2))
+ {
+ diff.append("Property ");
+ diff.append(prop1.getName());
+ diff.append(" is set on one DataObject but not the other");
+ return false;
+ }
+
+ if (dataObject1->isSet(prop1))
+ {
+
+ if (prop1.isMany() != prop2.isMany())
+ {
+ diff.append("Property ");
+ diff.append(prop1.getName());
+ diff.append(" is many on one DataObject but not the other");
+ return false;
+ }
+ if (propertyType1.isDataType() != propertyType2.isDataType())
+ {
+ diff.append("Property ");
+ diff.append(prop1.getName());
+ diff.append(" is dataType on one DataObject but not the other");
+ return false;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // For a many-valued property get the list of values
+ //////////////////////////////////////////////////////////////////////
+ if (prop1.isMany())
+ {
+ DataObjectList& dol1 = dataObject1->getList(prop1);
+ DataObjectList& dol2 = dataObject2->getList(prop2);
+ if (dol1.size() != dol2.size())
+ {
+ diff.append("Property ");
+ diff.append(prop1.getName());
+ diff.append(" is many but has differing number of elements");
+ return false;
+ }
+
+ for (int j = 0; j <dol1.size(); j++)
+ {
+
+ if (propertyType1.isDataType())
+ {
+ if( strcmp(dol1.getCString(j), dol2.getCString(j)) != 0)
+ {
+ diff.append("Differing value for Property ");
+ diff.append(prop1.getName());
+ diff.append("[");
+ diff += ((int)j);
+ diff.append("]:\n");
+ diff.append(dol1.getCString(j));
+ diff.append("\n");
+ diff.append(dol2.getCString(j));
+ return false;
+ }
+ }
+ else
+ {
+ if(!compareDataObjects(dol1[j], dol2[j], diff))
+ {
+ return false;
+ }
+ }
+ }
+ } // end IsMany
+
+
+ //////////////////////////////////////////////////////////////////////
+ // For a primitive data type compare the values
+ //////////////////////////////////////////////////////////////////////
+ else if (propertyType1.isDataType())
+ {
+ if( strcmp(dataObject1->getCString(prop1), dataObject2->getCString(prop2)) != 0)
+ {
+ diff.append("Differing value for Property ");
+ diff.append(prop1.getName());
+ diff.append(":\n");
+ diff.append(dataObject1->getCString(prop1));
+ diff.append("\n");
+ diff.append(dataObject2->getCString(prop2));
+ return false;
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // For a dataobject compare the DOs
+ //////////////////////////////////////////////////////////////////////
+ else
+ {
+ if(!compareDataObjects(dataObject1->getDataObject(prop1), dataObject2->getDataObject(prop2), diff))
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ const bool Utils::compareDataObjects(DataObjectPtr dataObject1, DataObjectPtr dataObject2, string& diff)
+ {
+ if (!dataObject1 || !dataObject2)
+ {
+ diff.append("Cannot compare null DataObjects");
+ return false;
+ }
+
+ const Type& dataObject1Type = dataObject1->getType();
+ const Type& dataObject2Type = dataObject2->getType();
+
+ if( strcmp(dataObject1Type.getURI(), dataObject2Type.getURI()) != 0 ||
+ strcmp(dataObject1Type.getName(), dataObject2Type.getName()) != 0 )
+ {
+ diff.append("DataObject Types differ:\n");
+ diff.append(dataObject1Type.getURI());
+ diff.append("#");
+ diff.append(dataObject1Type.getName());
+ diff.append("\n");
+ diff.append(dataObject2Type.getURI());
+ diff.append("#");
+ diff.append(dataObject2Type.getName());
+ return false;
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Iterate over all the properties
+ //////////////////////////////////////////////////////////////////////////
+ PropertyList pl1 = dataObject1->getInstanceProperties();
+ PropertyList pl2 = dataObject2->getInstanceProperties();
+ if (pl1.size() != pl2.size())
+ {
+ diff.append("Differing number of properties");
+ return false;
+ }
+
+ if (pl1.size() != 0)
+ {
+ for (int i = 0; i < pl1.size(); i++)
+ {
+ if(!compareProperties(dataObject1, pl1[i], dataObject2, pl2[i], diff))
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ if(dataObject1->getType().isOpenType() != dataObject2->getType().isOpenType() &&
+ dataObject1->getType().isDataObjectType() != dataObject2->getType().isDataObjectType())
+ {
+ diff.append("DataObject is open & DO type on one but not the other");
+ return false;
+ }
+
+ // Compare elements under an open DataObject
+ if(dataObject1->getType().isOpenType() && dataObject1->getType().isDataObjectType())
+ {
+ SequencePtr sequence1 = dataObject1->getSequence();
+ SequencePtr sequence2 = dataObject2->getSequence();
+
+ if (sequence1 != NULL && sequence2 != NULL)
+ {
+ if (sequence1->size() != sequence1->size())
+ {
+ diff.append("Open DataObjects have differing number of elements");
+ return false;
+ }
+
+ for (int i = 0; i < sequence1->size(); i++)
+ {
+ if (sequence1->isText(i) != sequence2->isText(i))
+ {
+ diff.append("Open DataObjects have differing element types at position ");
+ diff += ((int) i);
+ return false;
+ }
+ if (sequence1->isText(i))
+ {
+ if( strcmp(sequence1->getCStringValue(i), sequence2->getCStringValue(i)) != 0)
+ {
+ diff.append("Differing value for element at position ");
+ diff += ((int) i);
+ diff.append(":\n");
+ diff.append(sequence1->getCStringValue(i));
+ diff.append("\n");
+ diff.append(sequence2->getCStringValue(i));
+ return false;
+ }
+ }
+ else
+ {
+ const Property& p1 = sequence1->getProperty(i);
+ const Property& p2 = sequence2->getProperty(i);
+
+ if(!compareProperties(dataObject1, p1, dataObject2, p2, diff))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
+ void Utils::printDO(DataObjectPtr dataObject, int increment)
+ {
+ int inc=increment;
+ if (!dataObject)
+ return;
+ const Type& dataObjectType = dataObject->getType();
+ tabs(inc);
+ cout << "DataObject type: " << dataObjectType.getURI()<< "#" << dataObjectType.getName() << endl;
+ inc++;
+
+ //////////////////////////////////////////////////////////////////////////
+ // Iterate over all the properties
+ //////////////////////////////////////////////////////////////////////////
+ PropertyList pl = dataObject->getInstanceProperties();
+ if (pl.size() != 0)
+ {
+ for (int i = 0; i < pl.size(); i++)
+ {
+ tabs(inc);
+ cout << "Property: " << pl[i].getName() << endl;
+
+ const Type& propertyType = pl[i].getType();
+
+ tabs(inc);
+ cout << "Property Type: " << propertyType.getURI()<< "#" << propertyType.getName() << endl;
+
+ if (dataObject->isSet(pl[i]))
+ {
+
+ //////////////////////////////////////////////////////////////////////
+ // For a many-valued property get the list of values
+ //////////////////////////////////////////////////////////////////////
+ if (pl[i].isMany())
+ {
+ inc++;
+ DataObjectList& dol = dataObject->getList(pl[i]);
+ for (int j = 0; j <dol.size(); j++)
+ {
+ tabs(inc);
+ cout << "Value " << j <<endl;
+ inc++;
+
+ if (propertyType.isDataType())
+ {
+ tabs(inc);
+ cout<< "Property Value: " << dol.getCString(j) <<endl ;
+ }
+ else
+ printDO(dol[j], inc);
+ inc--;
+ }
+ inc--;
+ } // end IsMany
+
+
+ //////////////////////////////////////////////////////////////////////
+ // For a primitive data type print the value
+ //////////////////////////////////////////////////////////////////////
+ else if (propertyType.isDataType())
+ {
+ tabs(inc);
+ cout<< "Property Value: " << dataObject->getCString(pl[i]) <<endl ;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // For a dataobject print the do
+ //////////////////////////////////////////////////////////////////////
+ else
+ {
+ inc++;
+ printDO(dataObject->getDataObject(pl[i]), inc);
+ inc--;
+ }
+ }
+ else
+ {
+ tabs(inc);
+ cout<< "Property Value: not set" <<endl ;
+ }
+
+ }
+ }
+ else
+ {
+ // Print elements under an open DataObject
+ if(dataObject->getType().isOpenType() && dataObject->getType().isDataObjectType())
+ {
+ SequencePtr sequence = dataObject->getSequence();
+ if (sequence != NULL)
+ {
+ for (int i = 0; i < sequence->size(); i++)
+ {
+ if (sequence->isText(i))
+ {
+ tabs(inc);
+ cout<< "Text Value: " << sequence->getCStringValue(i) <<endl ;
+ }
+ else {
+ const Property& p = sequence->getProperty(i);
+
+ tabs(inc);
+ cout << "Property: " << p.getName() << endl;
+
+ const Type& propertyType = p.getType();
+
+ tabs(inc);
+ cout << "Property Type: " << propertyType.getURI()<< "#" << propertyType.getName() << endl;
+
+ if (dataObject->isSet(p))
+ {
+
+ //////////////////////////////////////////////////////////////////////
+ // For a many-valued property get the list of values
+ //////////////////////////////////////////////////////////////////////
+ if (p.isMany())
+ {
+ inc++;
+ DataObjectList& dol = dataObject->getList(p);
+ for (int j = 0; j <dol.size(); j++)
+ {
+ tabs(inc);
+ cout << "Value " << j <<endl;
+ inc++;
+
+ if (propertyType.isDataType())
+ {
+ tabs(inc);
+ cout<< "Property Value: " << dol.getCString(j) <<endl ;
+ }
+ else
+ printDO(dol[j], inc);
+ inc--;
+ }
+ inc--;
+ } // end IsMany
+
+
+ //////////////////////////////////////////////////////////////////////
+ // For a primitive data type print the value
+ //////////////////////////////////////////////////////////////////////
+ else if (propertyType.isDataType())
+ {
+ tabs(inc);
+ cout<< "Property Value: " << dataObject->getCString(p) <<endl ;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // For a dataobject print the do
+ //////////////////////////////////////////////////////////////////////
+ else
+ {
+ inc++;
+ printDO(dataObject->getDataObject(p), inc);
+ inc--;
+ }
+ }
+ else
+ {
+ tabs(inc);
+ cout<< "Property Value: not set" <<endl ;
+ }
+ }
+ }
+ }
+ }
+ }
+ inc--;
+ }
+
+ void Utils::printTypes(DataFactoryPtr df)
+ {
+ //////////////////////////////////////////////////////////////////////////
+ // Retrieve the DataFactory from the mediator
+ // get the list of Types in the DataFactory and list them
+ //////////////////////////////////////////////////////////////////////////
+ TypeList tl = df->getTypes();
+ for (int i = 0; i < tl.size(); i++)
+ {
+ cout << "Type: " << tl[i].getURI()<< "#" << tl[i].getName() << endl;
+ PropertyList pl = tl[i].getProperties();
+ for (int j = 0; j < pl.size(); j++)
+ {
+ cout << "\tProperty: " << pl[j].getName()
+ << " type: " <<pl[j].getType().getURI()<<"#"<<pl[j].getType().getName()<< endl;
+
+ }
+ }
+
+ }
+
+ void Utils::printType(const Type& type, int increment)
+ {
+ int inc = increment;
+ tabs(inc);
+ cout << "Type: " << type.getURI()<< "#" << type.getName() << endl;
+ inc++;
+ PropertyList pl = type.getProperties();
+ for (int j = 0; j < pl.size(); j++)
+ {
+ tabs(inc);
+ cout << "\tProperty: " << pl[j].getName()
+ << " type: " <<pl[j].getType().getURI()<<"#"<<pl[j].getType().getName()<< endl;
+ inc++;
+ printType(pl[j].getType(), inc);
+ inc--;
+ }
+ }
+
+ } // End namespace sca
+} // End namespace tuscany
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.h
new file mode 100644
index 0000000000..4d20d952c8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/src/tuscany/sca/util/Utils.h
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_util_utils_h
+#define tuscany_sca_util_utils_h
+#include <string>
+using std::string;
+#include "commonj/sdo/SDO.h"
+
+#include "tuscany/sca/export.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ /**
+ * Utility methods to parse strings and provide debugging information.
+ */
+ class SCA_API Utils {
+
+ public:
+ static void tokeniseUri(const string& uri, string& token1, string& token2);
+ static void tokeniseQName(const string& sdoname, string& uri, string& name);
+ static void tokeniseString(
+ const string& separator,
+ const string& str,
+ string& token1,
+ string& token2);
+
+ static void rTokeniseString(
+ const string& separator,
+ const string& str,
+ string& token1,
+ string& token2);
+
+ static void breakpoint();
+
+ static void printDO(commonj::sdo::DataObjectPtr dataObject, int increment=0);
+ static void printTypes(commonj::sdo::DataFactoryPtr df);
+ static void printType(const commonj::sdo::Type& type, int increment=0);
+
+ static const bool compareDataObjects(commonj::sdo::DataObjectPtr dataObject1, commonj::sdo::DataObjectPtr dataObject2, string& diff);
+ static const bool compareProperties(commonj::sdo::DataObjectPtr dataObject1, const commonj::sdo::Property& prop1, commonj::sdo::DataObjectPtr dataObject2, const commonj::sdo::Property& prop2, string& diff);
+
+ private:
+ static void tabs(int increment=0);
+ };
+
+ } // End namespace sca
+} // End namespace tuscany
+#endif // tuscany_sca_util_utils_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/test/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/test/Makefile.am
new file mode 100644
index 0000000000..7aec56841b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/core/test/Makefile.am
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS =
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/Makefile.am
new file mode 100644
index 0000000000..d3499698ce
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/Makefile.am
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+if WANT_ALL
+ CPP_EXTENSION = cpp
+ PYTHON_EXTENSION = python
+ RUBY_EXTENSION = ruby
+ PHP_EXTENSION = php
+ WSBINDING_EXTENSION = ws
+ SCABINDING_EXTENSION = sca
+endif
+if WANT_CPP
+ CPP_EXTENSION = cpp
+endif
+if WANT_PYTHON
+ PYTHON_EXTENSION = python
+endif
+if WANT_RUBY
+ RUBY_EXTENSION = ruby
+endif
+if WANT_PHP
+ PHP_EXTENSION = php
+endif
+if WANT_WSBINDING
+ WSBINDING_EXTENSION = ws
+endif
+if WANT_SCABINDING
+ SCABINDING_EXTENSION = sca
+endif
+SUBDIRS = ${CPP_EXTENSION} ${WSBINDING_EXTENSION} ${SCABINDING_EXTENSION} ${PYTHON_EXTENSION} ${RUBY_EXTENSION} ${PHP_EXTENSION}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/Makefile.am
new file mode 100644
index 0000000000..7fac33118a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
+
+datadir=$(prefix)/extensions/cpp
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/deploy.bat
new file mode 100644
index 0000000000..e87f3b4dd6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/deploy.bat
@@ -0,0 +1,74 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set cppextdir=%extdir%\cpp
+set srcdir=%rootdir%\runtime\extensions\cpp\src
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %cppextdir% mkdir %cppextdir%
+if not exist %cppextdir%\bin mkdir %cppextdir%\bin
+if not exist %cppextdir%\lib mkdir %cppextdir%\lib
+if not exist %cppextdir%\include mkdir %cppextdir%\include
+if not exist %cppextdir%\include\osoa mkdir %cppextdir%\include\osoa
+if not exist %cppextdir%\include\osoa\sca mkdir %cppextdir%\include\osoa\sca
+if not exist %cppextdir%\include\tuscany mkdir %cppextdir%\include\tuscany
+if not exist %cppextdir%\include\tuscany\sca mkdir %cppextdir%\include\tuscany\sca
+if not exist %cppextdir%\include\tuscany\sca\cpp mkdir %cppextdir%\include\tuscany\sca\cpp
+if not exist %cppextdir%\include\tuscany\sca\cpp\model mkdir %cppextdir%\include\tuscany\sca\cpp\model
+if not exist %cppextdir%\xsd mkdir %cppextdir%\xsd
+
+del %cppextdir%\bin\tuscany_sca_cpp.*
+del %cppextdir%\lib\*.lib
+
+copy %srcdir%\osoa\sca\*.h %cppextdir%\include\osoa\sca
+copy %srcdir%\tuscany\sca\cpp\*.h %cppextdir%\include\tuscany\sca\cpp
+copy %srcdir%\tuscany\sca\cpp\model\*.h %cppextdir%\include\tuscany\sca\cpp\model
+
+copy %srcdir%\..\xsd\*.* %cppextdir%\xsd
+
+copy %inpath%\tuscany_sca_cpp.lib %cppextdir%\lib
+copy %inpath%\tuscany_sca_cpp.dll %cppextdir%\bin
+
+if exist %inpath%\tuscany_sca_cpp.pdb copy %inpath%\tuscany_sca_cpp.pdb %cppextdir%\bin
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/Makefile.am
new file mode 100644
index 0000000000..c579dd2598
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/Makefile.am
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/cpp/lib
+lib_LTLIBRARIES = libtuscany_sca_cpp.la
+includedir=$(prefix)/extensions/cpp/include
+nobase_include_HEADERS = \
+osoa/sca/*.h \
+tuscany/sca/cpp/*.h \
+tuscany/sca/cpp/model/*.h
+
+libtuscany_sca_cpp_la_SOURCES = \
+osoa/sca/ComponentContext.cpp \
+osoa/sca/CompositeContext.cpp \
+tuscany/sca/cpp/ComponentContextImpl.cpp \
+tuscany/sca/cpp/CompositeContextImpl.cpp \
+tuscany/sca/cpp/CPPExtension.cpp \
+tuscany/sca/cpp/CPPImplementationExtension.cpp \
+tuscany/sca/cpp/CPPInterfaceExtension.cpp \
+tuscany/sca/cpp/CPPServiceProxy.cpp \
+tuscany/sca/cpp/CPPServiceWrapper.cpp \
+tuscany/sca/cpp/model/CPPImplementation.cpp \
+tuscany/sca/cpp/model/CPPInterface.cpp \
+tuscany/sca/cpp/model/CPPReferenceBinding.cpp \
+tuscany/sca/cpp/model/CPPServiceBinding.cpp
+
+libtuscany_sca_cpp_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca
+
+INCLUDES = -Imodel -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.cpp
new file mode 100644
index 0000000000..bd0a6c39db
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.cpp
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "osoa/sca/ComponentContext.h"
+#include "tuscany/sca/util/Logging.h"
+#include "osoa/sca/ServiceRuntimeException.h"
+#include "tuscany/sca/cpp/ComponentContextImpl.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "commonj/sdo/SDO.h"
+using commonj::sdo::DataFactoryPtr;
+
+using namespace tuscany::sca;
+using namespace tuscany::sca::cpp;
+
+namespace osoa
+{
+ namespace sca
+ {
+
+ // =======================================================
+ // getCurrent: create a context from the current component
+ // =======================================================
+ ComponentContext ComponentContext::getCurrent()
+ {
+ LOGENTRY(1, "ComponentContext::getCurrent");
+ Component* component = tuscany::sca::SCARuntime::getInstance()->getCurrentComponent();
+ if (!component)
+ {
+ throw ComponentContextException("No current component");
+ }
+ ComponentContext* cci = new ComponentContextImpl(component);
+ LOGEXIT(1, "ComponentContext::constructor");
+ return ComponentContext(cci);
+ }
+
+ // ===========
+ // Constructor
+ // ===========
+ ComponentContext::ComponentContext(ComponentContext* implementation)
+ : impl(implementation)
+ {
+ LOGENTRY(1, "ComponentContext::constructor");
+ LOGEXIT(1, "ComponentContext::constructor");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ ComponentContext::~ComponentContext()
+ {
+ LOGENTRY(1, "ComponentContext::destructor");
+ delete impl;
+ LOGEXIT(1, "ComponentContext::destructor");
+ }
+
+ // ===================================
+ // Copy constructor: create a new impl
+ // ===================================
+ ComponentContext::ComponentContext(const ComponentContext& ctx)
+ {
+ Component* component = ((ComponentContextImpl*)impl)->getComponent();
+ impl = new ComponentContextImpl(component);
+ }
+
+ // =============================
+ // operator= : create a new impl
+ // =============================
+ ComponentContext& ComponentContext::operator=(const ComponentContext& ctx)
+ {
+ if (this != &ctx)
+ {
+ Component* component = ((ComponentContextImpl*)impl)->getComponent();
+ impl = new ComponentContextImpl(component);
+ }
+ return *this;
+ }
+
+ // ==========
+ // getService
+ // ==========
+ void* ComponentContext::getService(const std::string& referenceName)
+ {
+ LOGENTRY(1, "ComponentContext::getService");
+ void* service = impl->getService(referenceName);
+ LOGEXIT(1, "ComponentContext::getService");
+ return service;
+ }
+
+ // ===========
+ // getServices
+ // ===========
+ std::list<void*> ComponentContext::getServices(const std::string& referenceName)
+ {
+ return impl->getServices(referenceName);
+ }
+
+ // ============
+ // getProperties
+ // =============
+ DataObjectPtr ComponentContext::getProperties()
+ {
+ LOGENTRY(1, "ComponentContext::getProperties");
+ DataObjectPtr properties = impl->getProperties();
+ LOGEXIT(1, "ComponentContext::getProperties");
+ return properties;
+ }
+
+ // ============
+ // getDataFactory
+ // =============
+ DataFactoryPtr ComponentContext::getDataFactory()
+ {
+ LOGENTRY(1, "ComponentContext::getDataFactory");
+ DataFactoryPtr dataFactory = impl->getDataFactory();
+ LOGEXIT(1, "ComponentContext::getDataFactory");
+ return dataFactory;
+ }
+
+
+ } // End namespace sca
+} // End namespace osoa
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.h
new file mode 100644
index 0000000000..fae62062b2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.h
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef osoa_sca_componentcontext_h
+#define osoa_sca_componentcontext_h
+
+#include "osoa/sca/export.h"
+#include "commonj/sdo/SDO.h"
+#include <string>
+#include <list>
+namespace osoa
+{
+ namespace sca
+ {
+
+ /**
+ * An SCA component implementation uses the ComponentContext class to
+ * retrieve information about the configured SCA component.
+ */
+ class SCA_CPP_API ComponentContext
+ {
+
+ public:
+ /**
+ * Return a new ComponentContext for the current Component.
+ */
+ static ComponentContext getCurrent();
+
+ /**
+ * Resolve a reference name into a single configured service.
+ * If the component's reference is wired to more than one service
+ * then theis method will return an exception.
+ * @param referenceName The reference to be resolved. This must match
+ * the name of a reference configured in the component type file for
+ * this component.
+ */
+ virtual void* getService(const std::string& referenceName);
+
+ /**
+ * Resolve a reference name into a list of configured services.
+ * @param referenceName The reference to be resolved. This must match
+ * the name of a reference configured in the component type file for
+ * this component.
+ */
+ virtual std::list<void*> getServices(const std::string& referenceName);
+
+ /**
+ * Get the configured properties for the component.
+ * @return A data object representing all the properties that
+ * are configured for this component.
+ */
+ virtual commonj::sdo::DataObjectPtr getProperties();
+
+ /**
+ * Get an SDO data factory which will allow the component to
+ * create data objects for all the types configured for this
+ * component.
+ * @return A data factory to be used by the component to create
+ * new data objects.
+ */
+ virtual commonj::sdo::DataFactoryPtr getDataFactory();
+
+ /**
+ * Destructor
+ */
+ virtual ~ComponentContext();
+
+ /**
+ * Constructor
+ */
+ ComponentContext(const ComponentContext&);
+
+ /**
+ * Copy operator
+ */
+ ComponentContext& operator=(const ComponentContext&);
+
+ /**
+ * Constructor to create an interface class from the contained
+ * implementation.
+ * @param implementation the actual implementation class
+ */
+ ComponentContext(ComponentContext* implementation);
+
+ private:
+
+ /**
+ * Pointer to the class which provides the actual implementation.
+ */
+ ComponentContext* impl;
+
+ };
+ } // End namespace sca
+} // End namespace osoa
+
+#endif // osoa_sca_componentcontext_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.cpp
new file mode 100644
index 0000000000..43e5e6806e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.cpp
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "osoa/sca/CompositeContext.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/cpp/CompositeContextImpl.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "commonj/sdo/SDO.h"
+
+using commonj::sdo::DataFactoryPtr;
+using namespace tuscany::sca;
+using namespace tuscany::sca::cpp;
+
+
+namespace osoa
+{
+ namespace sca
+ {
+ // ===========
+ // Constructor
+ // ===========
+ CompositeContext::CompositeContext(CompositeContext* implementation)
+ : impl(implementation)
+ {
+ }
+
+ // ===================================
+ // Copy constructor: create a new impl
+ // ===================================
+ CompositeContext::CompositeContext(const CompositeContext& ctx)
+ {
+ impl = new CompositeContextImpl(
+ tuscany::sca::SCARuntime::getInstance()->getDefaultComponent());
+ }
+
+ // =============================
+ // operator= : create a new impl
+ // =============================
+ CompositeContext& CompositeContext::operator=(const CompositeContext& ctx)
+ {
+ if (this != &ctx)
+ {
+ impl = new CompositeContextImpl(
+ tuscany::sca::SCARuntime::getInstance()->getDefaultComponent());
+ }
+ return *this;
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ CompositeContext::~CompositeContext()
+ {
+ LOGENTRY(1, "CompositeContext::destructor");
+ delete impl;
+ LOGEXIT(1, "CompositeContext::destructor");
+ }
+
+ // ====================================================
+ // getCurrent: create a context from the current composite
+ // ====================================================
+ CompositeContext CompositeContext::getCurrent()
+ {
+ LOGENTRY(1, "CompositeContext::getCurrent");
+ CompositeContext* cci = new CompositeContextImpl(
+ tuscany::sca::SCARuntime::getInstance()->getDefaultComponent());
+ LOGEXIT(1, "CompositeContext::getCurrent");
+ return CompositeContext(cci);
+ }
+
+ // =============
+ // locateService
+ // =============
+ void* CompositeContext::locateService(const std::string& serviceName)
+ {
+ LOGENTRY(1, "CompositeContext::locateService");
+ void* sp = impl->locateService(serviceName);
+ LOGEXIT(1, "CompositeContext::locateService");
+ return sp;
+ }
+
+ // =============
+ // getDataFactory
+ // =============
+ DataFactoryPtr CompositeContext::getDataFactory()
+ {
+ LOGENTRY(1, "CompositeContext::getDataFactory");
+ DataFactoryPtr df = impl->getDataFactory();
+ LOGEXIT(1, "CompositeContext::getDataFactory");
+ return df;
+ }
+
+
+ } // End namespace sca
+} // End namespace osoa
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.h
new file mode 100644
index 0000000000..ac13ed875e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.h
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef osoa_sca_compositecontext_h
+#define osoa_sca_compositecontext_h
+
+#include "osoa/sca/export.h"
+#include "commonj/sdo/SDO.h"
+
+namespace osoa
+{
+ namespace sca
+ {
+ /**
+ * An SCA component implementation, or a non-SCA client, uses the
+ * CompositeContext class to retrieve information about the configured
+ * SCA composite.
+ */
+ class SCA_CPP_API CompositeContext
+ {
+
+ public:
+ /**
+ * Return a new CompositeContext for the current Component.
+ */
+ static CompositeContext getCurrent();
+
+ /**
+ * Resolve a service name into a single component service.
+ * @param serviceName The name of the service in the form
+ * "component name"/"service name". The service name is
+ * optional in the component has one service.
+ * @return A pointer to an object which can be cast to the
+ * business interface of the target service.
+ */
+ virtual void* locateService(const std::string& serviceName);
+
+ /**
+ * Get an SDO data factory which will allow the component to
+ * create data objects for all the types configured for this
+ * component.
+ * @return A data factory to be used by the component to create
+ * new data objects.
+ */
+ virtual commonj::sdo::DataFactoryPtr getDataFactory();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CompositeContext();
+
+ /**
+ * Constructor
+ */
+ CompositeContext(const CompositeContext&);
+
+ /**
+ * Copy operator
+ */
+ CompositeContext& operator=(const CompositeContext&);
+
+ /**
+ * Constructor to create an interface class from the contained
+ * implementation.
+ * @param implementation The actual implementation class.
+ */
+ CompositeContext(CompositeContext* implementation);
+
+ private:
+
+ /**
+ * Pointer to the class which provides the actual implementation.
+ */
+ CompositeContext* impl;
+
+ };
+ } // End namespace sca
+} // End namespace osoa
+
+#endif // osoa_sca_compositecontext_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ServiceRuntimeException.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ServiceRuntimeException.h
new file mode 100644
index 0000000000..7bf8800242
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/ServiceRuntimeException.h
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef osoa_sca_serviceruntimeexception_h
+#define osoa_sca_serviceruntimeexception_h
+
+#include "osoa/sca/export.h"
+
+#include "tuscany/sca/util/Exceptions.h"
+using tuscany::sca::TuscanyRuntimeException;
+namespace osoa
+{
+ namespace sca
+ {
+ /**
+ * Top level exception to represent all the exceptions that may be
+ * thrown by an SCA runtime implementation.
+ */
+ class SCA_CPP_API ServiceRuntimeException : public TuscanyRuntimeException
+ {
+ public:
+ ServiceRuntimeException(
+ const char *name="ServiceRuntimeException",
+ severity_level sev=Severe,
+ const char* msg_text="")
+ : TuscanyRuntimeException(name, sev, msg_text)
+ {
+ }
+ }; // End ServiceRuntimeException class definition
+
+
+ /**
+ * A remotable service is currently unavailable. It is possible that a retry
+ * may resolve this exception.
+ */
+ class SCA_CPP_API ServiceUnavailableException: public ServiceRuntimeException
+ {
+ public:
+ ServiceUnavailableException(const char* serviceName)
+ : ServiceRuntimeException("ServiceUnavailableException", Warning,
+ serviceName)
+ {
+ }
+ private:
+ }; // End ServiceUnavailableException class definition
+
+
+ /**
+ * The target of a wire cannot be found, or the reference has not been
+ * configured.
+ */
+ class SCA_CPP_API ServiceNotFoundException: public ServiceRuntimeException
+ {
+ public:
+ ServiceNotFoundException(const char* msg)
+ : ServiceRuntimeException("ServiceNotFoundException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End ServiceNotFoundException class definition
+
+
+ /**
+ * There is no current component (for example, if a non-SCA component
+ * tries to get the current ComponentContext).
+ */
+ class SCA_CPP_API ComponentContextException: public ServiceRuntimeException
+ {
+ public:
+ ComponentContextException(const char* msg)
+ : ServiceRuntimeException("ComponentContextException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End ComponentContextException class definition
+
+
+ } // End namespace sca
+} // End namespace osoa
+
+#endif // osoa_sca_serviceruntimeexception_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/export.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/export.h
new file mode 100644
index 0000000000..8a69913be4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/export.h
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef osoa_sca_export_h
+#define osoa_sca_export_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+
+#ifdef TUSCANY_SCA_CPP_EXPORTS
+#define SCA_CPP_API __declspec(dllexport)
+#else
+#define SCA_CPP_API __declspec(dllimport)
+#endif
+
+#else
+#include <sys/time.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#define SCA_CPP_API
+#endif
+
+#endif // osoa_sca_export_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/sca.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/sca.h
new file mode 100644
index 0000000000..6cce9453d7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/osoa/sca/sca.h
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef osoa_sca_sca_h
+#define osoa_sca_sca_h
+
+#include "osoa/sca/export.h"
+#include "osoa/sca/CompositeContext.h"
+#include "osoa/sca/ComponentContext.h"
+#include "osoa/sca/ServiceRuntimeException.h"
+
+#endif // osoa_sca_sca_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.cpp
new file mode 100644
index 0000000000..b418a52425
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.cpp
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/cpp/CPPExtension.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/cpp/CPPImplementationExtension.h"
+#include "tuscany/sca/cpp/CPPInterfaceExtension.h"
+
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::cpp::CPPExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ // ===================================================================
+ // Constructor for the CPPExtension class.
+ // ===================================================================
+ CPPExtension::CPPExtension()
+ {
+ LOGENTRY(1, "CPPExtension::constructor");
+ LOGEXIT(1, "CPPExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the CPPExtension class.
+ // ===================================================================
+ CPPExtension::~CPPExtension()
+ {
+ LOGENTRY(1, "CPPExtension::destructor");;
+ LOGEXIT(1, "CPPExtension::destructor");
+ }
+
+ void CPPExtension::initialize()
+ {
+ LOGENTRY(1, "CPPExtension::initialize");;
+ SCARuntime::getInstance()->registerImplementationExtension(new CPPImplementationExtension());
+ SCARuntime::getInstance()->registerInterfaceExtension(new CPPInterfaceExtension());
+ LOGEXIT(1, "CPPExtension::initialize");;
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.h
new file mode 100644
index 0000000000..d6c872629d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.h
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_cppextension_h
+#define tuscany_sca_cpp_cppextension_h
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ class CPPExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ CPPExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~CPPExtension();
+
+ static void initialize();
+
+ private:
+
+ };
+
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_cppextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.cpp
new file mode 100644
index 0000000000..5ddf4b1113
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.cpp
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/cpp/CPPImplementationExtension.h"
+#include "tuscany/sca/cpp/model/CPPImplementation.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ // ===================================================================
+ // Constructor for the CPPImplementationExtension class.
+ // ===================================================================
+ CPPImplementationExtension::CPPImplementationExtension()
+ {
+ LOGENTRY(1, "CPPImplementationExtension::constructor");
+ LOGEXIT(1, "CPPImplementationExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the CPPImplementationExtension class.
+ // ===================================================================
+ CPPImplementationExtension::~CPPImplementationExtension()
+ {
+ LOGENTRY(1, "CPPImplementationExtension::destructor");;
+ LOGEXIT(1, "CPPImplementationExtension::destructor");
+ }
+
+ const string CPPImplementationExtension::extensionName("cpp");
+ const string CPPImplementationExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#CPPImplementation");
+
+ // ===================================================================
+ // loadModelElement - load the info from implementation.cpp
+ // ===================================================================
+ ComponentType* CPPImplementationExtension::getImplementation(Composite *composite, DataObjectPtr scdlImplementation)
+ {
+ string implType = scdlImplementation->getType().getName();
+ if (implType == "CPPImplementation")
+ {
+ string library = scdlImplementation->getCString("library");
+ string header = scdlImplementation->getCString("header");
+ string className = scdlImplementation->getCString("class");
+ string scopeName = scdlImplementation->getCString("scope");
+
+ CPPImplementation::Scope scope;
+ if (scopeName == "composite")
+ {
+ scope = CPPImplementation::COMPOSITE;
+ }
+ else
+ {
+ scope = CPPImplementation::STATELESS;
+ }
+
+ string headerPath;
+ string headerStub;
+
+ // Separate any path element
+ Utils::rTokeniseString("/", header, headerPath, headerStub);
+ if (headerPath != "")
+ {
+ headerPath += "/";
+ }
+
+ // Determine the header stub name
+ string tmp;
+ Utils::rTokeniseString(".h", headerStub, headerStub, tmp);
+
+ CPPImplementation* cppImpl = new CPPImplementation(
+ composite, library, header, headerPath, headerStub, className, scope);
+
+ return cppImpl;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.h
new file mode 100644
index 0000000000..8548a208e9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_cppimplementationextension_h
+#define tuscany_sca_cpp_cppimplementationextension_h
+
+#include "tuscany/sca/extension/ImplementationExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ class CPPImplementationExtension : public ImplementationExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ CPPImplementationExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~CPPImplementationExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema type for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#implementation.cpp")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ComponentType* getImplementation(Composite* composite, DataObjectPtr scdlImplementation);
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_cppimplementationextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.cpp
new file mode 100644
index 0000000000..d470949746
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.cpp
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/cpp/CPPInterfaceExtension.h"
+#include "tuscany/sca/cpp/model/CPPInterface.h"
+#include "tuscany/sca/util/Logging.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ // ===================================================================
+ // Constructor for the CPPInterfaceExtension class.
+ // ===================================================================
+ CPPInterfaceExtension::CPPInterfaceExtension()
+ {
+ LOGENTRY(1, "CPPInterfaceExtension::constructor");
+ LOGEXIT(1, "CPPInterfaceExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the CPPInterfaceExtension class.
+ // ===================================================================
+ CPPInterfaceExtension::~CPPInterfaceExtension()
+ {
+ LOGENTRY(1, "CPPInterfaceExtension::destructor");;
+ LOGEXIT(1, "CPPInterfaceExtension::destructor");
+ }
+
+ const string CPPInterfaceExtension::extensionName("cpp");
+ const string CPPInterfaceExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#CPPInterface");
+
+ // ===================================================================
+ // loadModelElement - load the info from interface.cpp
+ // ===================================================================
+ tuscany::sca::model::Interface* CPPInterfaceExtension::getInterface(Composite* composite, DataObjectPtr scdlInterface)
+ {
+ // Determine the type
+ string ifType = scdlInterface->getType().getName();
+ if (ifType == "CPPInterface")
+ {
+ string header = scdlInterface->getCString("header");
+ string className = scdlInterface->getCString("class");
+ bool remotable = scdlInterface->getBoolean("remotable");
+
+ return new CPPInterface(header, className, remotable, false);
+ }
+ return 0;
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.h
new file mode 100644
index 0000000000..62c3b9854b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_cppinterfaceextension_h
+#define tuscany_sca_cpp_cppinterfaceextension_h
+
+#include "tuscany/sca/extension/InterfaceExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ class CPPInterfaceExtension : public InterfaceExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ CPPInterfaceExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~CPPInterfaceExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema type for this interface extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#interface.cpp")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual tuscany::sca::model::Interface* getInterface(Composite* composite, DataObjectPtr scdlInterface);
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_cppinterfaceextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.cpp
new file mode 100644
index 0000000000..56511fc9e6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.cpp
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/cpp/CPPServiceProxy.h"
+#include "tuscany/sca/util/Logging.h"
+#include "osoa/sca/ServiceRuntimeException.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/cpp/model/CPPImplementation.h"
+#include "tuscany/sca/cpp/model/CPPReferenceBinding.h"
+
+using namespace osoa::sca;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ // ============================
+ // Constructor: Create a proxy
+ // ============================
+ CPPServiceProxy::CPPServiceProxy(Reference* reference)
+ : ServiceProxy(reference)
+ {
+ LOGENTRY(1,"CPPServiceProxy::constructor");
+
+ // ----------------------
+ // Get the component
+ // ----------------------
+ Component* component = reference->getComponent();
+ string name = reference->getType()->getName();
+
+ // Get the service wrapper
+ CPPReferenceBinding* referenceBinding = (CPPReferenceBinding*)reference->getBinding();
+
+ ServiceWrapper* serviceWrapper = referenceBinding->getTargetServiceBinding()->getServiceWrapper();
+
+ createProxy(component, name, serviceWrapper);
+
+ LOGEXIT(1,"CPPServiceProxy::constructor");
+ }
+
+ // ============================
+ // Constructor: Create a proxy
+ // ============================
+ CPPServiceProxy::CPPServiceProxy(Service* service)
+ : ServiceProxy(0)
+ {
+ LOGENTRY(1,"CPPServiceProxy::constructor");
+
+ // ----------------------
+ // Get the component
+ // ----------------------
+ Component* component = service->getComponent();
+ string name = service->getType()->getName();
+
+ // Get the service wrapper
+ ServiceWrapper* serviceWrapper = service->getBinding()->getServiceWrapper();
+
+ createProxy(component, name, serviceWrapper);
+
+ LOGEXIT(1,"CPPServiceProxy::constructor");
+ }
+
+ void CPPServiceProxy::createProxy(Component* component, const string& name, ServiceWrapper* serviceWrapper)
+ {
+ LOGENTRY(1,"CPPServiceProxy::createProxy");
+
+ ComponentType* componentType = component->getType();
+ if (!componentType)
+ {
+ string msg = "Component " + component->getName() + " has no implementation defined";
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ // If we got here we have a CPP implementation
+ CPPImplementation* impl = (CPPImplementation *)componentType;
+
+ // ----------------------------------------------------
+ // Get implementation dll name and service factory name
+ // ----------------------------------------------------
+ string library = impl->getLibrary();
+ string headerStub = impl->getHeaderStub();
+
+ string fullLibraryName = component->getComposite()->getRoot() + "/" + library;
+ string proxyFactoryName = headerStub + "_" + name + "_Proxy_Factory";
+ string proxyDestructorName = headerStub + "_" + name + "_Proxy_Destructor";
+ typedef void* (* PROXYFACTORY) (ServiceWrapper*);
+
+ // ------------
+ // Load the dll
+ // ------------
+ proxyLibrary = Library(fullLibraryName);
+
+ // -------------------------
+ // Locate the factory method
+ // -------------------------
+ PROXYFACTORY proxyFactory = (PROXYFACTORY)proxyLibrary.getSymbol(proxyFactoryName);
+ if (!proxyFactory)
+ {
+ LOGERROR_2(1, "CPPServiceProxy::createProxy: Unable to locate %s in library %s",
+ proxyFactoryName.c_str(), fullLibraryName.c_str());
+ string msg = "Unable to locate " + proxyFactoryName + " in library " + fullLibraryName;
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ // -----------------------------------
+ // Now create an instance of the proxy
+ // -----------------------------------
+ void* proxy = proxyFactory(serviceWrapper);
+ if (!proxy)
+ {
+ LOGERROR_2(1, "CPPServiceProxy::createProxy: Factory method %s in library %s returned null",
+ proxyFactoryName.c_str(), fullLibraryName.c_str());
+ string msg = "Factory method " + proxyFactoryName + " in library " + fullLibraryName + " returned null";
+ throw ServiceNotFoundException(msg.c_str());
+ }
+ else
+ {
+ proxies.push_back(proxy);
+ }
+
+ // -------------------------
+ // Get the destructor method
+ // -------------------------
+ destructor = (PROXYDESTRUCTOR)proxyLibrary.getSymbol(proxyDestructorName);
+
+ LOGEXIT(1,"CPPServiceProxy::createProxy");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ CPPServiceProxy::~CPPServiceProxy()
+ {
+ LOGENTRY(1,"CPPServiceProxy::destructor");
+
+ // Delete the proxies
+ if (destructor != NULL && proxies.size() != 0)
+ {
+ destructor(*proxies.begin());
+ }
+ LOGEXIT(1,"CPPServiceProxy::destructor");
+ }
+
+ CPPServiceProxy::PROXIES CPPServiceProxy::getProxies()
+ {
+ return proxies;
+ }
+
+ void* CPPServiceProxy::getProxy()
+ {
+ if (proxies.size() != 0)
+ {
+ return *proxies.begin();
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.h
new file mode 100644
index 0000000000..77a20d08b8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.h
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_cpp_cppserviceproxy_h
+#define tuscany_sca_cpp_cppserviceproxy_h
+
+#include "osoa/sca/export.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/util/Library.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/Service.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ /**
+ * Holds a proxy for a given component and reference.
+ * The proxy which is held inside a ServiceProxy will be specific to the component
+ * and reference and will have been code generated and be contained in a dll
+ * created by a developer of an SCA application.
+ */
+ class CPPServiceProxy : public ServiceProxy
+ {
+ public:
+ /**
+ * Create a new service proxy for a reference. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The reference on the source component.
+ * @param target The wrapper of the service which is wired to this reference.
+ */
+ CPPServiceProxy(Reference* reference);
+
+ /**
+ * Create a new service proxy for a service. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The service on the target component.
+ * @param target The wrapper of the target service.
+ */
+ CPPServiceProxy(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPPServiceProxy();
+
+ /**
+ * Return an instance of the proxy created for this particular component and reference.
+ * @return The proxy.
+ */
+ virtual void* getProxy();
+
+ /**
+ * Return the proxies created for this particular component and reference.
+ * @return The proxies.
+ */
+ typedef std::list<void*> PROXIES;
+ virtual PROXIES getProxies();
+
+ private:
+
+ /**
+ * Create the proxy
+ */
+ void createProxy(Component* component, const string& name, ServiceWrapper* serviceWrapper);
+
+ /**
+ * Holds the instances of the code generated proxies.
+ */
+ PROXIES proxies;
+
+ /**
+ * A function pointer to the destructor of the proxy.
+ */
+ typedef void (* PROXYDESTRUCTOR) (void*);
+ PROXYDESTRUCTOR destructor;
+
+ /**
+ * The library which contains the code for the proxy.
+ */
+ Library proxyLibrary;
+
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_cppserviceproxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.cpp
new file mode 100644
index 0000000000..3d7df2d44d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.cpp
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+#include "osoa/sca/ServiceRuntimeException.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Library.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/cpp/model/CPPImplementation.h"
+#include "tuscany/sca/model/Interface.h"
+
+using namespace osoa::sca;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ // ===================
+ // Static data members
+ // ===================
+ void* CPPServiceWrapper::staticImpl = 0;
+
+ // ===========
+ // Constructor
+ // ===========
+ CPPServiceWrapper::CPPServiceWrapper(Service* service)
+ : ServiceWrapper(service)
+ {
+ LOGENTRY(1,"CPPServiceWrapper::constructor");
+
+ component = service->getComponent();
+ interf = service->getType()->getInterface();
+ implementation = (CPPImplementation*)component->getType();
+
+ LOGEXIT(1,"CPPServiceWrapper::constructor");
+
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ CPPServiceWrapper::~CPPServiceWrapper()
+ {
+ LOGENTRY(1,"CPPServiceWrapper::destructor");
+ LOGEXIT(1,"CPPServiceWrapper::destructor");
+ }
+
+
+ // ======================================================================
+ // getImplementation: get an implementation for this scope
+ // ======================================================================
+ void* CPPServiceWrapper::getImplementation()
+ {
+ if (implementation->getScope() == CPPImplementation::COMPOSITE)
+ {
+ if (!staticImpl)
+ {
+ staticImpl = newImplementation();
+ }
+ return staticImpl;
+ }
+ else // (scope == CPPInterface::STATELESS)
+ {
+ return newImplementation();
+ }
+ }
+
+ // ======================================================================
+ // releaseImplementation: release the implementation for this scope
+ // ======================================================================
+ void CPPServiceWrapper::releaseImplementation()
+ {
+ if (implementation->getScope() == CPPImplementation::STATELESS)
+ {
+ deleteImplementation();
+ }
+ }
+
+ // ======================================================================
+ // invoke: wrapper call to service with setting the component context
+ // ======================================================================
+ void CPPServiceWrapper::invoke(Operation& operation)
+ {
+ LOGENTRY(1,"CPPServiceWrapper::invoke");
+
+ SCARuntime* runtime = SCARuntime::getInstance();
+ runtime->setCurrentComponent(component);
+
+ try
+ {
+ invokeService(operation);
+ }
+ catch (...)
+ {
+ runtime->unsetCurrentComponent();
+ throw;
+ }
+ runtime->unsetCurrentComponent();
+ LOGEXIT(1,"CPPServiceWrapper::invoke");
+
+ }
+
+ void CPPServiceWrapper::setLibrary(Library* lib)
+ {
+ wrapperLibrary = lib;
+ }
+
+ // ======================================================================
+ // getServiceWrapper: create a wrapper for the target ComponentService
+ // ======================================================================
+ CPPServiceWrapper* CPPServiceWrapper::getServiceWrapper(Service* service)
+ {
+ CPPServiceWrapper* serviceWrapper = 0;
+
+ // -----------------------------------------------
+ // Get the implementation for the target component
+ // -----------------------------------------------
+ Component* component = service->getComponent();
+ CPPImplementation* impl = (CPPImplementation*)component->getType();
+ if (!impl)
+ {
+ string msg = "Component " + component->getName() + " has no implementation defined";
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ // ----------------------------------------------------
+ // Get implementation dll name and wrapper factory name
+ // ----------------------------------------------------
+ string libraryName = impl->getLibrary();
+ string wrapperFactoryName = impl->getHeaderStub()
+ + "_" + service->getType()->getName() + "_Wrapper_Factory";
+
+ // ------------
+ // Load the dll
+ // ------------
+ string fullLibraryName = component->getComposite()->getRoot() + "/" + libraryName;
+ typedef CPPServiceWrapper* (* WRAPPERFACTORY) (Service*);
+ Library* wrapperLib = new Library(fullLibraryName);
+
+ // -------------------------
+ // Locate the factory method
+ // -------------------------
+ WRAPPERFACTORY wrapperFactory = (WRAPPERFACTORY)wrapperLib->getSymbol(wrapperFactoryName);
+ if (!wrapperFactory)
+ {
+ LOGERROR_2(1, "CPPServiceWrapper::getServiceWrapper: Unable to locate %s in library %s",
+ wrapperFactoryName.c_str(), fullLibraryName.c_str());
+ string msg = "Unable to locate " + wrapperFactoryName + " in library " + fullLibraryName;
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ // -------------------------------------
+ // Now create an instance of the wrapper
+ // -------------------------------------
+ serviceWrapper = wrapperFactory(service);
+ if (!serviceWrapper)
+ {
+ LOGERROR_2(1, "CPPServiceWrapper::getServiceWrapper: Factory method %s in library %s returned null",
+ wrapperFactoryName.c_str(), fullLibraryName.c_str());
+ string msg = "Factory method " + wrapperFactoryName + " in library " + fullLibraryName + " returned null";
+ throw ServiceNotFoundException(msg.c_str());
+ }
+ serviceWrapper->setLibrary(wrapperLib);
+
+ return serviceWrapper;
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.h
new file mode 100644
index 0000000000..eeeb9cdb82
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.h
@@ -0,0 +1,162 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_cppservicewrapper_h
+#define tuscany_sca_cpp_cppservicewrapper_h
+
+#include "osoa/sca/export.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/cpp/model/CPPImplementation.h"
+#include "tuscany/sca/util/Library.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ /**
+ * Wraps the service on a component implementation.
+ * This abstract class is extended by generated code which provides
+ * the implementation of some of the methods.
+ * An instance of this class wraps the actual component implementation which
+ * has been written by a developer of an SCA application.
+ */
+ class SCA_CPP_API CPPServiceWrapper : public ServiceWrapper
+ {
+ public:
+ /**
+ * Factory method to create a new CPPServiceWrapper for a given target
+ * service. This method will provide all the loading of dlls required to
+ * create the target component.
+ * @param target The service on the component for which this wrapper is to be
+ * created.
+ * @return A wrapper that references the given target.
+ */
+ static CPPServiceWrapper* getServiceWrapper(Service* service);
+
+ /**
+ * Constructor.
+ * @param target The component service to which this wrapper refers.
+ */
+ CPPServiceWrapper(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPPServiceWrapper();
+
+ /**
+ * All business method calls to the target component go through the invoke method.
+ * @param operation The details of the method, paramaters and return value for the
+ * business method to be called on the target component.
+ */
+ virtual void invoke(Operation& operation);
+
+ /**
+ * Return the loaded shared library for the target component.
+ */
+ Library* getLibrary() const { return wrapperLibrary; }
+
+ protected:
+
+ /**
+ * Delegated method to invoke the correct method on the target component.
+ * Implemented by the subtype.
+ */
+ virtual void invokeService(Operation& operation) = 0;
+
+ /**
+ * Delegated method to create a new component implementation.
+ * Implemented by the subtype.
+ * @return A pointer to an instance of the component implementation class.
+ */
+ virtual void* newImplementation() = 0;
+
+ /**
+ * Delegated method to delete the current instance of the component
+ * implementation.
+ * Implemented by the subtype.
+ */
+ virtual void deleteImplementation() = 0;
+
+ /**
+ * Return the current instance of the component implementation.
+ * @return A pointer to an instance of the component implementation class.
+ */
+ virtual void* getImplementation();
+
+ /**
+ * Indicates that the current instance of the component implementation
+ * has been finished with.
+ * Will call CPPServiceWrapper#deleteImplementation if the
+ * implementation is stateless (so that a new instance is returned
+ * for each call).
+ */
+ virtual void releaseImplementation();
+
+ private:
+ /**
+ * Holds an implementation instance if the scope is set to composite.
+ */
+ static void* staticImpl;
+
+ /**
+ * The component to which this wrapper refers.
+ */
+ Component* component;
+
+ /**
+ * A pointer to the interface which the service exposes.
+ */
+ Interface* interf;
+
+ /**
+ * The component implementation
+ */
+ CPPImplementation* implementation;
+
+ /**
+ * Pointer to the loaded library which contains the component
+ * implementation.
+ */
+ Library* wrapperLibrary;
+
+ /**
+ * Set the loaded library which contains the component
+ * implementation.
+ * @param lib The library.
+ */
+ void setLibrary(Library* lib);
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_cppservicewrapper_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.cpp
new file mode 100644
index 0000000000..76d6bbc5f6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.cpp
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "osoa/sca/ServiceRuntimeException.h"
+#include "tuscany/sca/cpp/ComponentContextImpl.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ReferenceBinding.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ // ===========
+ // Constructor
+ // ===========
+ ComponentContextImpl::ComponentContextImpl(Component* comp)
+ : ComponentContext(0), component(comp)
+ {
+ LOGENTRY(1, "ComponentContextImpl::constructor");
+ LOGEXIT(1, "ComponentContextImpl::constructor");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ ComponentContextImpl::~ComponentContextImpl()
+ {
+ }
+
+
+ // ==========================================================================
+ // getServices: return a list of Proxies for services wired to this reference
+ // ==========================================================================
+ std::list<void*> ComponentContextImpl::getServices(const std::string& referenceName)
+ {
+ LOGENTRY(1, "ComponentContextImpl::getServices");
+
+ // --------------------------------------------------------------
+ // locate reference in the current component and determine target
+ // --------------------------------------------------------------
+ Reference* reference = component->findReference(referenceName);
+ if (!reference)
+ {
+ string message = "Reference not defined: ";
+ message = message + referenceName;
+ throw ServiceNotFoundException(message.c_str());
+ }
+
+ // Get a service proxy from the binding configured on the reference
+ CPPServiceProxy* serviceProxy = (CPPServiceProxy*)reference->getBinding()->getServiceProxy();
+ if (serviceProxy == NULL)
+ {
+ string message = "Reference ";
+ message = message + referenceName + " not wired";
+ throw ServiceNotFoundException(message.c_str());
+ }
+
+ return serviceProxy->getProxies();
+
+ } // End getServices()
+
+
+ // ===================================================================
+ // getService: return a Proxy for the services wired to this reference
+ // ===================================================================
+ void* ComponentContextImpl::getService(const std::string& referenceName)
+ {
+ LOGENTRY(1, "ComponentContextImpl::getService");
+
+ // --------------------------------------------------------------
+ // locate reference in the current component and determine target
+ // --------------------------------------------------------------
+ Reference* reference = component->findReference(referenceName);
+ if (!reference)
+ {
+ string message = "Reference not defined: ";
+ message = message + referenceName;
+ throw ServiceNotFoundException(message.c_str());
+ }
+
+ // --------------------
+ // Validate the request
+ // --------------------
+ switch (reference->getType()->getMultiplicity())
+ {
+ case ReferenceType::ZERO_MANY:
+ case ReferenceType::ONE_MANY:
+ {
+ string message = "getService() called for reference with multiplicity >1 :";
+ message = message + referenceName;
+ throw ServiceNotFoundException(message.c_str());
+ }
+ default:
+ {
+ }
+ } // end switch
+
+ // Get a service proxy from the binding configured on the reference
+ CPPServiceProxy* serviceProxy = (CPPServiceProxy*)reference->getBinding()->getServiceProxy();
+ if (serviceProxy == NULL)
+ {
+ string message = "Reference ";
+ message = message + referenceName + " not wired";
+ throw ServiceNotFoundException(message.c_str());
+ }
+
+ void* service = serviceProxy->getProxy();
+ return service;
+
+ } // End getService()
+
+ // ==============================================
+ // getProperties: return the component properties
+ // ==============================================
+ DataObjectPtr ComponentContextImpl::getProperties()
+ {
+ LOGENTRY(1, "ComponentContextImpl::getProperties");
+ DataObjectPtr properties = component->getProperties();
+
+ LOGEXIT(1, "ComponentContextImpl::getProperties");
+ return properties;
+ }
+
+ // ==============================================
+ // getDataFactory: return the data factory for the composite in which
+ // this component resides
+ // ==============================================
+ commonj::sdo::DataFactoryPtr ComponentContextImpl::getDataFactory()
+ {
+ LOGENTRY(1, "ComponentContextImpl::getProperties");
+ commonj::sdo::DataFactoryPtr dataFactory = component->getComposite()->getDataFactory();
+
+ LOGEXIT(1, "ComponentContextImpl::getDataFactory");
+ return dataFactory;
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.h
new file mode 100644
index 0000000000..6d9b76feeb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.h
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_componentcontextimpl_h
+#define tuscany_sca_cpp_componentcontextimpl_h
+
+#include <vector>
+using std::vector;
+
+#include "osoa/sca/ComponentContext.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/cpp/CPPServiceProxy.h"
+
+using namespace osoa::sca;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ /**
+ * Contains the actual implementation of a ComponentContext interface.
+ */
+ class ComponentContextImpl : public ComponentContext
+ {
+
+ public:
+ /**
+ * Constructor that takes a Component which represents the runtime
+ * model for this context.
+ */
+ ComponentContextImpl(Component* component);
+
+ /**
+ * Default constructor.
+ */
+ virtual ~ComponentContextImpl();
+
+ /**
+ * See ComponentContext.
+ */
+ virtual void* getService(const std::string& referenceName);
+
+ /**
+ * See ComponentContext.
+ */
+ virtual std::list<void*> getServices(const std::string& referenceName);
+
+ /**
+ * See ComponentContext.
+ */
+ virtual DataObjectPtr getProperties();
+
+ /**
+ * See ComponentContext.
+ */
+ virtual commonj::sdo::DataFactoryPtr getDataFactory();
+
+ /**
+ * Returns the contained Component.
+ * @return The Component to which this context refers.
+ */
+ virtual Component* getComponent() {return component;}
+
+ private:
+ ComponentContextImpl(const ComponentContextImpl&);
+ ComponentContextImpl& operator=(const ComponentContextImpl&);
+
+ /**
+ * Pointer to the runtime model Component to which this
+ * context refers.
+ */
+ Component* component;
+
+ /**
+ * Helper method to return a proxy to a service.
+ * @param serviceReference The source reference.
+ * @param target The target to which this source reference is wired.
+ * @return A pointer to an object which can be cast to the business
+ * class representing the target.
+ */
+ void* getServiceProxy(
+ Reference* serviceReference,
+ Service* target);
+
+ /**
+ * Helper method to return a wrapper for a target service.
+ * @param target The target for which this wrapper is to be created.
+ * @return The service wrapper.
+ */
+ ServiceWrapper* getServiceWrapper(Service* target);
+
+ };
+
+ } // End namespaca cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_componentcontextimpl_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.cpp
new file mode 100644
index 0000000000..009e0ed765
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.cpp
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "osoa/sca/ServiceRuntimeException.h"
+#include "tuscany/sca/cpp/CompositeContextImpl.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/cpp/CPPServiceProxy.h"
+#include "commonj/sdo/SDO.h"
+
+using namespace tuscany::sca::model;
+using namespace osoa::sca;
+using namespace commonj::sdo;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ // ===========
+ // Constructor
+ // ===========
+ CompositeContextImpl::CompositeContextImpl(Component* component)
+ : CompositeContext(0), component(component), composite((Composite*)component->getType())
+ {
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ CompositeContextImpl::~CompositeContextImpl()
+ {
+ }
+
+ // ===========================================================================
+ // locateService: return a proxy connected to a wrapper for the target service
+ // ===========================================================================
+ void* CompositeContextImpl::locateService(const std::string& serviceName)
+ {
+ LOGENTRY(1, "CompositeContextImpl::locateService");
+
+ // ----------------------------
+ // Locate the component service
+ // ----------------------------
+ Service* service = composite->findComponentService(serviceName);
+ string msg;
+ if (!service)
+ {
+ msg = "Service not found: ";
+ msg = msg + serviceName;
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ // ----------------------------
+ // Get a Proxy for this service
+ // ----------------------------
+
+ // The locate service API is used from CPP clients so we are using
+ // our default service proxy here
+ CPPServiceProxy* serviceProxy = new CPPServiceProxy(service);
+ LOGEXIT(1, "CompositeContextImpl::locateService");
+ return serviceProxy->getProxy();
+
+ }
+
+ // ==============================================
+ // getDataFactory: return the data factory for the current composite
+ // ==============================================
+ DataFactoryPtr CompositeContextImpl::getDataFactory()
+ {
+ LOGENTRY(1, "CompositeContextImpl::getDataFactory");
+ DataFactoryPtr dataFactory = composite->getDataFactory();
+
+ LOGEXIT(1, "CompositeContextImpl::getDataFactory");
+ return dataFactory;
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.h
new file mode 100644
index 0000000000..c11af16848
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.h
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_compositecontextimpl_h
+#define tuscany_sca_cpp_compositecontextimpl_h
+
+#include <vector>
+using std::vector;
+
+#include "osoa/sca/CompositeContext.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/cpp/CPPServiceProxy.h"
+
+using namespace osoa::sca;
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace cpp
+ {
+
+ /**
+ * Contains the actual implementation of a CompositeContext interface.
+ */
+ class CompositeContextImpl : public CompositeContext
+ {
+
+ public:
+ /**
+ * Constructor that takes a Composite which represents the runtime
+ * model for this context.
+ */
+ CompositeContextImpl(Component* component);
+
+ /**
+ * See CompositeContext#locateService.
+ */
+ virtual void* locateService(const std::string& serviceName);
+
+ /**
+ * See CompositeContext.
+ */
+ virtual commonj::sdo::DataFactoryPtr getDataFactory();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CompositeContextImpl();
+
+ private:
+ CompositeContextImpl(const CompositeContextImpl&);
+ CompositeContextImpl& operator=(const CompositeContextImpl&);
+
+ /**
+ * Pointer to the runtime model Composite object to which this
+ * context refers.
+ */
+ Composite* composite;
+
+ /**
+ * Pointer to the runtime model Component object to which this
+ * context refers.
+ */
+ Component* component;
+
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_compositecontextimpl_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.cpp
new file mode 100644
index 0000000000..4fb7c7cfd5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.cpp
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/cpp/model/CPPImplementation.h"
+#include "tuscany/sca/cpp/model/CPPServiceBinding.h"
+#include "tuscany/sca/cpp/model/CPPReferenceBinding.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/util/Utils.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace cpp
+ {
+
+ // Constructor
+ CPPImplementation::CPPImplementation(Composite* composite, const string& library, const string& header,
+ const string&headerPath, const string& headerStub, const string& className, Scope scope)
+ : ComponentType(composite, headerPath + headerStub),
+ library(library), header(header), headerPath(headerPath),
+ headerStub(headerStub), className(className), scope(scope)
+ {
+ }
+
+ CPPImplementation::~CPPImplementation()
+ {
+ }
+
+ void CPPImplementation::initializeComponent(Component* component)
+ {
+ ComponentType::initializeComponent(component);
+
+ // Create CPP bindings for all the services
+ const Component::SERVICE_MAP& services = component->getServices();
+ Component::SERVICE_MAP::const_iterator iter = services.begin();
+ for (int i=0; i< services.size(); i++)
+ {
+ Service *service = iter->second;
+ CPPServiceBinding* binding = new CPPServiceBinding(service);
+ service->setBinding(binding);
+ iter++;
+ }
+
+ // Create CPP bindings for all the references
+ const Component::REFERENCE_MAP& references = component->getReferences();
+ Component::REFERENCE_MAP::const_iterator refiter = references.begin();
+ for (int ri=0; ri< references.size(); ri++)
+ {
+ Reference *reference = refiter->second;
+ CPPReferenceBinding* binding = new CPPReferenceBinding(reference);
+ reference->setBinding(binding);
+ refiter++;
+ }
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.h
new file mode 100644
index 0000000000..20636df884
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.h
@@ -0,0 +1,150 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_model_cppimplementation_h
+#define tuscany_sca_cpp_model_cppimplementation_h
+#include "tuscany/sca/model/ComponentType.h"
+
+#include <map>
+using std::map;
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ /**
+ * Holds information about an SCA implementation written in C++
+ */
+ class CPPImplementation : public ComponentType
+ {
+
+ public:
+ /**
+ * Scope of the component implementation.
+ */
+ enum Scope
+ {
+ COMPOSITE,
+ STATELESS
+ };
+
+ /**
+ * Constructor.
+ * @param dllName Name of the shared library.
+ * @param header Name of the header file that contains the class declaring the
+ * implementation class.
+ * @param className Name of the class in the header file (could be a blank string
+ * if this is not specified).
+ */
+ CPPImplementation(Composite* composite, const string& library, const string& header, const string&headerPath,
+ const string& headerStub, const string& className, Scope scope);
+
+ /**
+ * Destructor
+ */
+ virtual ~CPPImplementation();
+
+ /**
+ * Initialize a component of this type.
+ * @param component The component to initialize.
+ */
+ virtual void initializeComponent(Component* component);
+
+ /**
+ * Returns the name of the shared library.
+ * @return The name of the shared library.
+ */
+ const string& getLibrary() const { return library; }
+
+ /**
+ * Get the name of the header file.
+ * @return Name of the header file.
+ */
+ const string& getHeader() const { return header; }
+
+ /**
+ * Get the header file name without the extension.
+ * @return The name of the header file without any extension.
+ */
+ const string& getHeaderStub() const { return headerStub; }
+
+ /**
+ * Get the header path.
+ * @return The pathe element of the header.
+ */
+ const string& getHeaderPath() const { return headerPath; }
+
+ /**
+ * Get the name of the class.
+ * @return The class name if specified.
+ */
+ const string& getClass() const { return className; }
+
+ /**
+ * Returns the implementation scope
+ */
+ Scope getScope() { return scope; }
+
+ private:
+
+ /**
+ * Name of the shared library.
+ */
+ string library;
+
+ /**
+ * Name of the header file describing the interface.
+ */
+ string header;
+
+ /**
+ * Name of the header file without the extension.
+ */
+ string headerStub;
+
+ /**
+ * Path element of the header.
+ */
+ string headerPath;
+
+ /**
+ * Name of the class in the header file declaring the implementation.
+ * May be an empty string if not set in the SCDL file.
+ */
+ string className;
+
+ /**
+ * Scope of the implementation
+ */
+ Scope scope;
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_model_cppimplementation_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.cpp
new file mode 100644
index 0000000000..a728880e32
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.cpp
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/cpp/model/CPPInterface.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ const string CPPInterface::typeQName("http://www.osoa.org/xmlns/sca/1.0#CPPInterface");
+
+ // Constructor
+ CPPInterface::CPPInterface(
+ const string& header,
+ const string& className,
+ bool remotable,
+ bool conversational)
+ : Interface(remotable, conversational), header(header), className(className)
+ {
+ string::size_type dot = header.rfind(".h"); // this will also find .hpp
+ if (dot != string::npos)
+ {
+ headerStub = header.substr(0, dot);
+ }
+ else
+ {
+ headerStub = header;
+ }
+
+ }
+
+ CPPInterface::~CPPInterface()
+ {
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.h
new file mode 100644
index 0000000000..d50d2f9485
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.h
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_model_cppinterface_h
+#define tuscany_sca_cpp_model_cppinterface_h
+
+#include "tuscany/sca/model/Interface.h"
+
+#include <map>
+using std::map;
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ /**
+ * Holds information about an interface described using a C++
+ * header file.
+ */
+ class CPPInterface : public Interface
+ {
+
+ public:
+ /**
+ * Constuctor.
+ * @param header Name of the header file containing the class that
+ * describes the interface.
+ * @param className Name of the class in the header file that
+ * describes the interface.
+ * @param scope The scope of the interface (stateless or composite).
+ * @param remotable True if the interface is remotable.
+ */
+ CPPInterface(
+ const string& header,
+ const string& className,
+ bool remotable,
+ bool conversational);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPPInterface();
+
+ /**
+ * Get the name of the header file.
+ * @return The name of the header file containing the definition of the
+ * interface.
+ */
+ const string& getHeader() { return header; }
+
+ /**
+ * Return the name of the header file without the extension.
+ * @return Header file name without any extension.
+ */
+ const string& getHeaderStub() { return headerStub; }
+
+ /**
+ * Get the name of the class.
+ * @return The name of the class defining the interface.
+ */
+ const string& getClass() { return className; }
+
+ /**
+ * return the QName of the schema type for this interface type
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#interface.cpp")
+ */
+ virtual const string& getInterfaceTypeQName() { return typeQName; };
+
+ private:
+
+ /**
+ * Name of the header file containing the definition of the interface.
+ */
+ string header;
+
+ /**
+ * Name of the header file without the extension.
+ */
+ string headerStub;
+
+ /**
+ * Name of the class in the header file.
+ */
+ string className;
+
+ /**
+ * The QName of the schema type for this interface type.
+ */
+ static const string typeQName;
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_model_cppinterface_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.cpp
new file mode 100644
index 0000000000..3c87560445
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.cpp
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/cpp/model/CPPReferenceBinding.h"
+#include "tuscany/sca/cpp/CPPServiceProxy.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ // Constructor
+ CPPReferenceBinding::CPPReferenceBinding(Reference* reference)
+ : ReferenceBinding(reference, ""), serviceProxy(NULL), targetServiceBinding(NULL)
+ {
+ }
+
+ // Destructor
+ CPPReferenceBinding::~CPPReferenceBinding()
+ {
+ }
+
+ ServiceProxy* CPPReferenceBinding::getServiceProxy()
+ {
+ return serviceProxy;
+ }
+
+ void CPPReferenceBinding::configure(ServiceBinding* binding)
+ {
+ targetServiceBinding = binding;
+
+ serviceProxy = new CPPServiceProxy(getReference());
+ }
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.h
new file mode 100644
index 0000000000..81ba88940d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.h
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_model_cppreferencebinding_h
+#define tuscany_sca_cpp_model_cppreferencebinding_h
+
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ /**
+ * Information about a CPP service binding for service or a reference.
+ */
+ class CPPReferenceBinding : public ReferenceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ * @param port The definition of the port to which the entrypoint
+ * or external service is to be bound. This is of the form
+ * "namespace"#endpoint("service"/"port")
+ */
+ CPPReferenceBinding(Reference* reference);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPPReferenceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#CPPImplementationBinding"; };
+
+ /**
+ * Create a proxy representing the reference to the
+ * client component.
+ */
+ virtual ServiceProxy* getServiceProxy();
+
+ /**
+ * Configure this binding from a service binding.
+ */
+ virtual void configure(ServiceBinding* serviceBinding);
+
+ /**
+ * Returns the target service binding.
+ */
+ ServiceBinding* getTargetServiceBinding() const { return targetServiceBinding; };
+
+ private:
+
+ /**
+ * The proxy representing the reference to the client
+ * component.
+ */
+ ServiceProxy* serviceProxy;
+
+ /**
+ * The service binding of the target
+ */
+ ServiceBinding* targetServiceBinding;
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_model_cppreferencebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.cpp
new file mode 100644
index 0000000000..641d9452f8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.cpp
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/cpp/model/CPPServiceBinding.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+
+ // Constructor
+ CPPServiceBinding::CPPServiceBinding(Service* service)
+ : ServiceBinding(service, "")
+ {
+ serviceWrapper = CPPServiceWrapper::getServiceWrapper(service);
+ }
+
+ // Destructor
+ CPPServiceBinding::~CPPServiceBinding()
+ {
+ }
+
+ ServiceWrapper* CPPServiceBinding::getServiceWrapper()
+ {
+ return (ServiceWrapper*)serviceWrapper;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.h
new file mode 100644
index 0000000000..f7db3065b3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.h
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_cpp_model_cppservicebinding_h
+#define tuscany_sca_cpp_model_cppservicebinding_h
+
+#include "tuscany/sca/model/ServiceBinding.h"
+using namespace tuscany::sca::model;
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace cpp
+ {
+ /**
+ * Information about a CPP service binding for service or a reference.
+ */
+ class CPPServiceBinding : public ServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ * @param port The definition of the port to which the entrypoint
+ * or external service is to be bound. This is of the form
+ * "namespace"#endpoint("service"/"port")
+ */
+ CPPServiceBinding(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPPServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#CPPImplementationBinding"; };
+
+ /**
+ * Create a wrapper for the service configured by this
+ * binding.
+ */
+ virtual ServiceWrapper* getServiceWrapper();
+
+ private:
+
+ /**
+ * The wrapper for the service configured by this binding.
+ */
+ ServiceWrapper* serviceWrapper;
+
+ };
+
+ } // End namespace cpp
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_cpp_model_cppservicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-implementation-cpp.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-implementation-cpp.xsd
new file mode 100644
index 0000000000..7292f747b8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-implementation-cpp.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="implementation.cpp" type="sca:CPPImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="CPPImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="library" type="NCName" use="required"/>
+ <attribute name="path" type="NCName" use="optional"/>
+ <attribute name="header" type="NCName" use="required"/>
+ <attribute name="class" type="Name" use="optional"/>
+ <attribute name="scope" type="sca:CPPImplementationScope" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <simpleType name="CPPImplementationScope">
+ <restriction base="string">
+ <enumeration value="stateless" />
+ <enumeration value="composite" />
+ </restriction>
+ </simpleType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-interface-cpp.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-interface-cpp.xsd
new file mode 100644
index 0000000000..585bac0dc4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/cpp/xsd/sca-interface-cpp.xsd
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="interface.cpp" type="sca:CPPInterface" substitutionGroup="sca:interface"/>
+ <complexType name="CPPInterface">
+ <complexContent>
+ <extension base="sca:Interface">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="header" type="NCName" use="required" />
+ <attribute name="class" type="Name" use="optional" />
+ <attribute name="callbackHeader" type="NCName" use="optional" />
+ <attribute name="callbackClass" type="Name" use="optional" />
+ <attribute name="remotable" type="boolean" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/Makefile.am
new file mode 100644
index 0000000000..b8c2a91db2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
+
+datadir=$(prefix)/extensions/php
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/Makefile.am
new file mode 100644
index 0000000000..523996e74e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/Makefile.am
@@ -0,0 +1,45 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/php/lib
+lib_LTLIBRARIES = libtuscany_sca_php.la
+includedir=$(prefix)/extensions/php/include
+nobase_include_HEADERS = \
+tuscany/sca/php/*.h \
+tuscany/sca/php/model/*.h
+
+libtuscany_sca_php_la_SOURCES = \
+tuscany/sca/php/PHPExtension.cpp \
+tuscany/sca/php/PHPImplementationExtension.cpp \
+tuscany/sca/php/PHPServiceWrapper.cpp \
+tuscany/sca/php/model/PHPImplementation.cpp \
+tuscany/sca/php/model/PHPServiceBinding.cpp
+
+libtuscany_sca_php_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L${PHP_LIB} -lphp5
+
+INCLUDES = -Imodel -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I${PHP_INCLUDE} \
+ -I${PHP_INCLUDE}/main \
+ -I${PHP_INCLUDE}/Zend \
+ -I${PHP_INCLUDE}/TSRM \
+ -I${PHP_INCLUDE}/sapi/embed
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/ServiceRuntimeException.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/ServiceRuntimeException.h
new file mode 100644
index 0000000000..d31679b994
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/ServiceRuntimeException.h
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef osoa_sca_serviceruntimeexception_h
+#define osoa_sca_serviceruntimeexception_h
+
+#include "osoa/sca/export.h"
+
+#include "tuscany/sca/util/Exceptions.h"
+using tuscany::sca::TuscanyRuntimeException;
+namespace osoa
+{
+ namespace sca
+ {
+ /**
+ * Top level exception to represent all the exceptions that may be
+ * thrown by an SCA runtime implementation.
+ */
+ class SCA_PHP_API ServiceRuntimeException : public TuscanyRuntimeException
+ {
+ public:
+ ServiceRuntimeException(
+ const char *name="ServiceRuntimeException",
+ severity_level sev=Severe,
+ const char* msg_text="")
+ : TuscanyRuntimeException(name, sev, msg_text)
+ {
+ }
+ }; // End ServiceRuntimeException class definition
+
+
+ /**
+ * A remotable service is currently unavailable. It is possible that a retry
+ * may resolve this exception.
+ */
+ class SCA_PHP_API ServiceUnavailableException: public ServiceRuntimeException
+ {
+ public:
+ ServiceUnavailableException(const char* serviceName)
+ : ServiceRuntimeException("ServiceUnavailableException", Warning,
+ serviceName)
+ {
+ }
+ private:
+ }; // End ServiceUnavailableException class definition
+
+
+ /**
+ * The target of a wire cannot be found, or the reference has not been
+ * configured.
+ */
+ class SCA_PHP_API ServiceNotFoundException: public ServiceRuntimeException
+ {
+ public:
+ ServiceNotFoundException(const char* msg)
+ : ServiceRuntimeException("ServiceNotFoundException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End ServiceNotFoundException class definition
+
+
+ /**
+ * There is no current component (for example, if a non-SCA component
+ * tries to get the current ComponentContext).
+ */
+ class SCA_PHP_API ComponentContextException: public ServiceRuntimeException
+ {
+ public:
+ ComponentContextException(const char* msg)
+ : ServiceRuntimeException("ComponentContextException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End ComponentContextException class definition
+
+ /**
+ * There is an error whilst trying to invoke a component.
+ */
+ class SCA_PHP_API ComponentInvocationException: public ServiceRuntimeException
+ {
+ public:
+ ComponentInvocationException(const char* msg)
+ : ServiceRuntimeException("ComponentInvocationException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End ComponentInvocationException class definition
+
+
+ } // End namespace sca
+} // End namespace osoa
+
+#endif // osoa_sca_serviceruntimeexception_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/export.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/export.h
new file mode 100644
index 0000000000..99794a3352
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/osoa/sca/export.h
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef osoa_sca_export_h
+#define osoa_sca_export_h
+#include "tuscany/sca/export.h"
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+
+#ifdef TUSCANY_SCA_PHP_EXPORTS
+#define SCA_PHP_API __declspec(dllexport)
+#else
+#define SCA_PHP_API __declspec(dllimport)
+#endif
+
+#else
+#include <sys/time.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#define SCA_PHP_API
+#endif
+
+#endif // osoa_sca_export_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.cpp
new file mode 100644
index 0000000000..f8768738e9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.cpp
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/php/PHPExtension.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/php/PHPImplementationExtension.h"
+
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::php::PHPExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+ // ===================================================================
+ // Constructor for the PHPExtension class.
+ // ===================================================================
+ PHPExtension::PHPExtension()
+ {
+ LOGENTRY(1, "PHPExtension::constructor");
+ LOGEXIT(1, "PHPExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the PHPExtension class.
+ // ===================================================================
+ PHPExtension::~PHPExtension()
+ {
+ LOGENTRY(1, "PHPExtension::destructor");;
+ LOGEXIT(1, "PHPExtension::destructor");
+ }
+
+ void PHPExtension::initialize()
+ {
+ LOGENTRY(1, "PHPExtension::initialize");;
+ SCARuntime::getInstance()->registerImplementationExtension(new PHPImplementationExtension());
+ //SCARuntime::getInstance()->registerInterfaceExtension(new PHPInterfaceExtension());
+ LOGEXIT(1, "PHPExtension::initialize");;
+ }
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.h
new file mode 100644
index 0000000000..971ed93c86
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.h
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_php_phpextension_h
+#define tuscany_sca_php_phpextension_h
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+
+ class PHPExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ PHPExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~PHPExtension();
+
+ static void initialize();
+
+ private:
+
+ };
+
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_php_phpextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.cpp
new file mode 100644
index 0000000000..7f204b0ce9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.cpp
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/php/PHPImplementationExtension.h"
+#include "tuscany/sca/php/model/PHPImplementation.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+ // ===================================================================
+ // Constructor for the PHPImplementationExtension class.
+ // ===================================================================
+ PHPImplementationExtension::PHPImplementationExtension()
+ {
+ LOGENTRY(1, "PHPImplementationExtension::constructor");
+ LOGEXIT(1, "PHPImplementationExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the PHPImplementationExtension class.
+ // ===================================================================
+ PHPImplementationExtension::~PHPImplementationExtension()
+ {
+ LOGENTRY(1, "PHPImplementationExtension::destructor");;
+ LOGEXIT(1, "PHPImplementationExtension::destructor");
+ }
+
+ const string PHPImplementationExtension::extensionName("php");
+ const string PHPImplementationExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#PHPImplementation");
+
+ // ===================================================================
+ // loadModelElement - load the info from implementation.php
+ // ===================================================================
+ ComponentType* PHPImplementationExtension::getImplementation(Composite *composite, DataObjectPtr scdlImplementation)
+ {
+ string implType = scdlImplementation->getType().getName();
+ if (implType == "PHPImplementation")
+ {
+ string module = scdlImplementation->getCString("module");
+ string className = scdlImplementation->getCString("class");
+
+ PHPImplementation* phpImpl = new PHPImplementation(composite, module, className);
+
+ return phpImpl;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.h
new file mode 100644
index 0000000000..9aa4aea969
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_php_phpimplementationextension_h
+#define tuscany_sca_php_phpimplementationextension_h
+
+#include "tuscany/sca/extension/ImplementationExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+
+ class PHPImplementationExtension : public ImplementationExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ PHPImplementationExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~PHPImplementationExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema element for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#implementation.phpn")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ComponentType* getImplementation(Composite* composite, DataObjectPtr scdlImplementation);
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_php_phpimplementationextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.cpp
new file mode 100644
index 0000000000..1b11e660c6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.cpp
@@ -0,0 +1,405 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+// some strangeness in the build that causes
+// WinSock.h and WinSock2.h to be included leading to redefinitions
+#define _WINSOCKAPI_
+
+#include "tuscany/sca/php/PHPServiceWrapper.h"
+
+#include "osoa/sca/ServiceRuntimeException.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/php/model/PHPImplementation.h"
+
+#include <php_embed.h>
+
+using namespace osoa::sca;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+ // a global!! place to put the response
+ // as I can't get the PHP return value
+ // processing to work. Need to be
+ // removed when the proper PHP SAPI is used
+ // The variable is only valid between the PHP engine call and
+ // the results processing. It stores the last thing that
+ // the script echoed
+ string scriptResponse;
+
+ // Global callbacks used by the PHP engine
+
+ // Callback for log messages
+ void php_log_message(char *message)
+ {
+ LOGINFO_1(5, "PHP Log (%s)", message);
+ }
+
+ // Callback for unbuffered writes (echo, print etc.)
+ int php_ub_write(const char *str, unsigned int str_length TSRMLS_DC)
+ {
+ LOGINFO_1(5, "PHP Write (%s)", str);
+ scriptResponse = str;
+ return str_length;
+ }
+
+ // Callback for errors
+ void php_error_cb(int type,
+ const char *error_filename,
+ const uint error_lineno,
+ const char *format, va_list args)
+ {
+ char buffer[2048];
+ int len;
+
+ len = snprintf(buffer, 2048, "Error on line %d: ", error_lineno);
+ vsnprintf(buffer + len, (2048 - len), format, args);
+ LOGINFO_1(5, "PHP Unformatted Error (%s)", buffer);
+ zend_bailout();
+ }
+
+ // Callback for flush (could be used to do something with the scriptResponse)
+ void php_flush(void *server_context)
+ {
+ LOGINFO(5, "Flush");
+ }
+
+ // ===========
+ // Constructor
+ // ===========
+ PHPServiceWrapper::PHPServiceWrapper(Service* service)
+ : ServiceWrapper(service)
+ {
+ LOGENTRY(1,"PHPServiceWrapper::constructor");
+
+ component = service->getComponent();
+ interf = service->getType()->getInterface();
+ remotable = interf->isRemotable();
+
+ // -----------------------------------------------
+ // Get the implementation for the target component
+ // -----------------------------------------------
+ PHPImplementation* impl = (PHPImplementation*)component->getType();
+ if (!impl)
+ {
+ string msg = "Component " + component->getName() + " has no implementation defined";
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ LOGINFO_1(3,"PHPServiceWrapper::getServiceWrapper module %s", impl->getModule().c_str());
+ LOGINFO_1(3,"PHPServiceWrapper::getServiceWrapper class %s", impl->getClass().c_str());
+
+ LOGEXIT(1,"PHPServiceWrapper::constructor");
+
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ PHPServiceWrapper::~PHPServiceWrapper()
+ {
+ LOGENTRY(1,"PHPServiceWrapper::destructor");
+ LOGEXIT(1,"PHPServiceWrapper::destructor");
+ }
+
+
+ // ======================================================================
+ // invoke: wrapper call to service with setting the component context
+ // ======================================================================
+ void PHPServiceWrapper::invoke(Operation& operation)
+ {
+ LOGENTRY(1,"PHPServiceWrapper::invoke");
+
+ SCARuntime* runtime = SCARuntime::getInstance();
+ runtime->setCurrentComponent(component);
+
+ try
+ {
+ LOGINFO_1(4, "PHPServiceWrapper::invoke called with operation name: %s", operation.getName().c_str());
+
+ // create a temporary script which
+ // - includes the named script
+ // - creates a class instance if required
+ // - calls the named method with the provided arguments
+
+ // get the component type information
+ PHPImplementation* impl = (PHPImplementation*)component->getType();
+
+ // first create the temporay script and include the module
+ string script = "include '" + impl->getModule() + ".php';";
+
+ // if we have a class create an instance
+ string className = impl->getClass();
+ if( &className != NULL && className.size() > 0)
+ {
+ script += "$anobject = new " + className + "();";
+ }
+
+ // construct the call to the function
+ script += "$response = ";
+
+ if( &className != NULL && className.size() > 0)
+ {
+ script += " $anobject->";
+ }
+
+ script += operation.getName().c_str();
+ script += "(";
+
+ char tempString [32];
+
+ // add the parameters to the call
+ for(unsigned int i = 0; i < operation.getNParms(); i++)
+ {
+ const Operation::Parameter& parm = operation.getParameter(i);
+ switch(parm.getType())
+ {
+ case Operation::BOOL:
+ {
+ if( *(bool*)parm.getValue())
+ {
+ //boolean true
+ script += "true";
+ }
+ else
+ {
+ script += "false";
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ sprintf ( tempString, "%d", *(short*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ sprintf ( tempString, "%d", *(unsigned short*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::LONG:
+ {
+ sprintf ( tempString, "%d", *(long*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ sprintf ( tempString, "%d", *(unsigned long*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ sprintf ( tempString, "%g", *(float*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ sprintf ( tempString, "%g", *(double*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ sprintf ( tempString, "%g", *(long double*)parm.getValue() );
+ script += tempString;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ script += *(char**)parm.getValue();
+ break;
+ }
+ case Operation::STRING:
+ {
+ script += (*(string*)parm.getValue()).c_str();
+ break;
+ }
+ default:
+ {
+ throw new ComponentInvocationException("Operation parameter type not supported");
+ }
+ }
+
+ if ( ( i + 1 ) < operation.getNParms() )
+ {
+ script += ", ";
+ }
+ }
+
+
+ // the closing bracket of the call
+ script += ");echo $response;return $response;";
+
+ // we now have the temporary script to make the call
+ LOGINFO_1(5, "Executing PHP script \n%s", script.c_str());
+
+ // load the PHP logging and error callback methods
+ php_embed_module.log_message = php_log_message;
+ php_embed_module.ub_write = php_ub_write;
+ php_embed_module.flush = php_flush;
+
+ //PHP_EMBED_START_BLOCK(/* argc */ 0, /* argv */ NULL)
+ void ***tsrm_ls;
+ int status = php_embed_init(0, NULL PTSRMLS_CC);
+ LOGINFO_1(5, "Engine startup status %d", status);
+
+ zend_first_try {
+ // set error handler
+ zend_error_cb = php_error_cb;
+
+ // call the dynamically created script
+ //zval retval;
+ zend_eval_string((char *) script.c_str(),
+ NULL,//&retval,
+ "PHP Component" TSRMLS_CC);
+
+ // get the response
+ // This doesn't want to work for some reason
+ // so have chaced the last echo that the script
+ // returns in the global scriptResponse variable
+ // This is a bit of a rubbish way of doing things so
+ // needs replacing when proper SAPI is used
+ //convert_to_string(&retval);
+ //LOGINFO_1(5, "Script returned %s", Z_STRVAL(retval));
+ //zval_dtor(&retval);
+
+ //PHP_EMBED_END_BLOCK()
+ } zend_catch {
+ int exit_status = EG(exit_status);
+ LOGINFO_1(5, "In catch %d", exit_status);
+ } zend_end_try();
+
+ //clean up
+ php_embed_shutdown(TSRMLS_C);
+ LOGINFO(5, "Engine shutdown");
+
+ // get the response values
+ LOGINFO_1(5, "Script returned %s", scriptResponse.c_str());
+
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ if(scriptResponse == "true")
+ {
+ *(bool*)operation.getReturnValue() = true;
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short) strtol(scriptResponse.c_str(), NULL,10);
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long) strtol(scriptResponse.c_str(), NULL,10);
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short) strtoul(scriptResponse.c_str(), NULL,10);
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long) strtoul(scriptResponse.c_str(), NULL,10);
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float) strtod(scriptResponse.c_str(), NULL);
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double) strtod(scriptResponse.c_str(), NULL);
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double) strtod(scriptResponse.c_str(), NULL);
+ break;
+ }
+ case Operation::CHARS:
+ {
+ *(char**)operation.getReturnValue() = (char *)scriptResponse.c_str();
+ break;
+ }
+ case Operation::STRING:
+ {
+ *(string*)operation.getReturnValue() = scriptResponse;
+ break;
+ }
+ default:;
+ }
+ }
+ catch (...)
+ {
+ runtime->unsetCurrentComponent();
+ throw;
+ }
+ runtime->unsetCurrentComponent();
+ LOGEXIT(1,"PHPServiceWrapper::invoke");
+
+ }
+
+ // ======================================================================
+ // getServiceWrapper: create a wrapper for the target ComponentService
+ // ======================================================================
+ PHPServiceWrapper* PHPServiceWrapper::getServiceWrapper(Service* service)
+ {
+ LOGENTRY(1,"PHPServiceWrapper::getServiceWrapper");
+ PHPServiceWrapper* serviceWrapper = 0;
+
+ // ---------------------------------
+ // Create an instance of the wrapper
+ // ---------------------------------
+ serviceWrapper = new PHPServiceWrapper(service);
+ if (!serviceWrapper)
+ {
+ string msg = "Could not create new PHPServiceWrapper";
+ LOGERROR(1, msg.c_str());
+ throw ServiceNotFoundException(msg.c_str());
+ }
+
+ LOGEXIT(1,"PHPServiceWrapper::getServiceWrapper");
+ return serviceWrapper;
+ }
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.h
new file mode 100644
index 0000000000..ef83a026a6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.h
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_php_phpservicewrapper_h
+#define tuscany_sca_php_phpservicewrapper_h
+
+
+#include "osoa/sca/export.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Interface.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+ class PHPInterface;
+
+ /**
+ * Wraps the service on a component implementation.
+ * This abstract class is extended by generated code which provides
+ * the implementation of some of the methods.
+ * An instance of this class wraps the actual component implementation which
+ * has been written by a developer of an SCA application.
+ */
+ class SCA_PHP_API PHPServiceWrapper : public ServiceWrapper
+ {
+ public:
+ /**
+ * Factory method to create a new PHPServiceWrapper for a given target
+ * service. This method will provide all the loading of dlls required to
+ * create the target component.
+ * @param target The service on the component for which this wrapper is to be
+ * created.
+ * @return A wrapper that references the given target.
+ */
+ static PHPServiceWrapper* getServiceWrapper(Service* service);
+
+ /**
+ * Constructor.
+ * @param target The component service to which this wrapper refers.
+ */
+ PHPServiceWrapper(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PHPServiceWrapper();
+
+ /**
+ * All business method calls to the target component go through the invoke method.
+ * @param operation The details of the method, paramaters and return value for the
+ * business method to be called on the target component.
+ */
+ virtual void invoke(Operation& operation);
+
+
+ protected:
+
+
+ private:
+
+
+ /**
+ * The component to which this wrapper refers.
+ */
+ Component* component;
+
+ /**
+ * Set to true if the service is remotable.
+ */
+ bool remotable;
+
+ /**
+ * A pointer to the interface which the service exposes.
+ */
+ Interface* interf;
+
+ };
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_php_phpservicewrapper_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.cpp
new file mode 100644
index 0000000000..f8992ed498
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.cpp
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/php/model/PHPImplementation.h"
+#include "tuscany/sca/php/model/PHPServiceBinding.h"
+//#include "tuscany/sca/php/model/PHPReferenceBinding.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/util/Utils.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace php
+ {
+
+ // Constructor
+ PHPImplementation::PHPImplementation(Composite* composite, const string& module, const string& className)
+ : ComponentType(composite, module),
+ module(module), className(className)
+ {
+ LOGENTRY(1,"PHPImplementation::constructor");
+ LOGEXIT(1,"PHPImplementation::constructor");
+ }
+
+ PHPImplementation::~PHPImplementation()
+ {
+ LOGENTRY(1,"PHPImplementation::destructor");
+ LOGEXIT(1,"PHPImplementation::destructor");
+ }
+
+ void PHPImplementation::initializeComponent(Component* component)
+ {
+ LOGENTRY(1,"PHPImplementation::initializeComponent");
+ ComponentType::initializeComponent(component);
+
+ // Create PHP bindings for all the services
+ const Component::SERVICE_MAP& services = component->getServices();
+ Component::SERVICE_MAP::const_iterator iter = services.begin();
+ for (unsigned int i=0; i< services.size(); i++)
+ {
+ Service *service = iter->second;
+ PHPServiceBinding* binding = new PHPServiceBinding(service);
+ service->setBinding(binding);
+ iter++;
+ }
+
+ // References not yet supported..
+
+ //// Create PHP bindings for all the references
+ //const Component::REFERENCE_MAP& references = component->getReferences();
+ //Component::REFERENCE_MAP::const_iterator refiter = references.begin();
+ //for (int ri=0; ri< references.size(); ri++)
+ //{
+ // Reference *reference = refiter->second;
+ // PHPReferenceBinding* binding = new PHPReferenceBinding(reference);
+ // reference->setBinding(binding);
+ // refiter++;
+ //}
+ LOGEXIT(1,"PHPImplementation::initializeComponent");
+ }
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.h
new file mode 100644
index 0000000000..b89ba8c5c2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.h
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_php_model_phpimplementation_h
+#define tuscany_sca_php_model_phpimplementation_h
+#include "tuscany/sca/model/ComponentType.h"
+
+#include <map>
+using std::map;
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+ /**
+ * Holds information about an SCA implementation written in PHP
+ */
+ class PHPImplementation : public ComponentType
+ {
+
+ public:
+ /**
+ * Constructor.
+ * @param composite Composite containing this implementation.
+ * @param module Name of the module.
+ * @param modulePath Path to the module (could be a blank string
+ * if this is not specified).
+ * @param className Name of the class in the module (could be a blank string
+ * if this is not specified).
+ */
+ PHPImplementation(Composite* composite, const string& module, const string& className);
+
+ /**
+ * Destructor
+ */
+ virtual ~PHPImplementation();
+
+ /**
+ * Initialize a component of this type.
+ * @param component The component to initialize.
+ */
+ virtual void initializeComponent(Component* component);
+
+ /**
+ * Returns the name of the module.
+ * @return The name of the module.
+ */
+ const string& getModule() const { return module; }
+
+ /**
+ * Get the name of the class.
+ * @return The class name if specified.
+ */
+ const string& getClass() const { return className; }
+
+ private:
+
+ /**
+ * Name of the module.
+ */
+ string module;
+
+ /**
+ * Name of the class in the header file declaring the implementation.
+ * May be an empty string if not set in the SCDL file.
+ */
+ string className;
+ };
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_php_model_phpimplementation_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.cpp
new file mode 100644
index 0000000000..fa162ce8f2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.cpp
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/php/model/PHPServiceBinding.h"
+#include "tuscany/sca/php/PHPServiceWrapper.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+
+ // Constructor
+ PHPServiceBinding::PHPServiceBinding(Service* service)
+ : ServiceBinding(service, "")
+ {
+ LOGENTRY(1,"PHPServiceBinding::constructor");
+ serviceWrapper = PHPServiceWrapper::getServiceWrapper(service);
+ LOGEXIT(1,"PHPServiceBinding::constructor");
+ }
+
+ // Destructor
+ PHPServiceBinding::~PHPServiceBinding()
+ {
+ LOGENTRY(1,"PHPServiceBinding::destructor");
+ LOGEXIT(1,"PHPServiceBinding::destructor");
+ }
+
+ ServiceWrapper* PHPServiceBinding::getServiceWrapper()
+ {
+ LOGENTRY(1,"PHPServiceBinding::getServiceWrapper");
+ LOGEXIT(1,"PHPServiceBinding::getServiceWrapper");
+ return (ServiceWrapper*)serviceWrapper;
+ }
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.h
new file mode 100644
index 0000000000..6b1e694bd6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.h
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_php_model_phpservicebinding_h
+#define tuscany_sca_php_model_phpservicebinding_h
+
+#include "tuscany/sca/model/ServiceBinding.h"
+using namespace tuscany::sca::model;
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace php
+ {
+ /**
+ * Information about a PHP service binding for service or a reference.
+ */
+ class PHPServiceBinding : public ServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ * @param port The definition of the port to which the entrypoint
+ * or external service is to be bound. This is of the form
+ * "namespace"#endpoint("service"/"port")
+ */
+ PHPServiceBinding(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PHPServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#PHPImplementationBinding"; };
+
+ /**
+ * Create a wrapper for the service configured by this
+ * binding.
+ */
+ virtual ServiceWrapper* getServiceWrapper();
+
+ private:
+
+ /**
+ * The wrapper for the service configured by this binding.
+ */
+ ServiceWrapper* serviceWrapper;
+
+ };
+
+ } // End namespace php
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_php_model_phpservicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/xsd/sca-implementation-php.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/xsd/sca-implementation-php.xsd
new file mode 100644
index 0000000000..0f32f120e6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/php/xsd/sca-implementation-php.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="implementation.php" type="sca:PHPImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="PHPImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="module" type="NCName" use="required"/>
+ <attribute name="class" type="Name" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/Makefile.am
new file mode 100644
index 0000000000..83e70b4b94
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
+
+datadir=$(prefix)/extensions/python
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/deploy.bat
new file mode 100644
index 0000000000..db007e892c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/deploy.bat
@@ -0,0 +1,84 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set pythonextdir=%extdir%\python
+set srcdir=%rootdir%\runtime\extensions\python\src
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %pythonextdir% mkdir %pythonextdir%
+if not exist %pythonextdir%\bin mkdir %pythonextdir%\bin
+if not exist %pythonextdir%\lib mkdir %pythonextdir%\lib
+if not exist %pythonextdir%\include mkdir %pythonextdir%\include
+if not exist %pythonextdir%\include\tuscany mkdir %pythonextdir%\include\tuscany
+if not exist %pythonextdir%\include\tuscany\sca mkdir %pythonextdir%\include\tuscany\sca
+if not exist %pythonextdir%\include\tuscany\sca\python mkdir %pythonextdir%\include\tuscany\sca\python
+if not exist %pythonextdir%\include\tuscany\sca\python\model mkdir %pythonextdir%\include\tuscany\sca\python\model
+if not exist %pythonextdir%\xsd mkdir %pythonextdir%\xsd
+
+del %pythonextdir%\bin\tuscany_sca_python.*
+del %pythonextdir%\lib\*.lib
+
+copy %srcdir%\tuscany\sca\python\*.h %pythonextdir%\include\tuscany\sca\python
+copy %srcdir%\tuscany\sca\python\model\*.h %pythonextdir%\include\tuscany\sca\python\model
+
+copy %srcdir%\..\xsd\*.* %pythonextdir%\xsd
+
+copy %inpath%\tuscany_sca_python.lib %pythonextdir%\lib
+copy %inpath%\tuscany_sca_python.dll %pythonextdir%\bin
+
+if exist %inpath%\tuscany_sca_python.pdb copy %inpath%\tuscany_sca_python.pdb %pythonextdir%\bin
+
+
+echo Building extension to Python
+set origdir=%~d0%~p0
+set bindir=%pythonextdir%\bin
+cd %srcdir%\tuscany\sca\python\
+
+rem if %pythonextdir% is a relative path, it won't be found, so set %bindir% to a full path
+if not exist %bindir% set bindir=%origdir%\%pythonextdir%\bin
+
+%PYTHON_HOME%\python sca_setup.py build
+%PYTHON_HOME%\python sca_setup.py install --install-lib %bindir%
+cd %origdir%
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/Makefile.am
new file mode 100644
index 0000000000..fe52a7aee7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/Makefile.am
@@ -0,0 +1,58 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/python/lib
+lib_LTLIBRARIES = libtuscany_sca_python.la
+
+install-exec-hook:
+ cd $(libdir); ln -s -f libtuscany_sca_python.so sca.so
+
+pydir=$(prefix)/extensions/python/lib
+py_DATA = tuscany/sca/python/sca_proxy.py
+EXTRA_DIST = tuscany/sca/python/sca_proxy.py
+
+includedir=$(prefix)/extensions/python/include
+nobase_include_HEADERS = \
+tuscany/sca/python/*.h \
+tuscany/sca/python/model/*.h
+
+libtuscany_sca_python_la_SOURCES = \
+tuscany/sca/python/PythonExtension.cpp \
+tuscany/sca/python/PythonImplementationExtension.cpp \
+tuscany/sca/python/PythonInterfaceExtension.cpp \
+tuscany/sca/python/PythonServiceWrapper.cpp \
+tuscany/sca/python/PythonServiceProxy.cpp \
+tuscany/sca/python/sca_module.cpp \
+tuscany/sca/python/model/PythonImplementation.cpp \
+tuscany/sca/python/model/PythonInterface.cpp \
+tuscany/sca/python/model/PythonReferenceBinding.cpp \
+tuscany/sca/python/model/PythonServiceBinding.cpp
+
+# Need python env varibles set. e.g:
+# PYTHON_LIB=/usr/lib
+# PYTHON_INCLUDE=/usr/include/python2.4
+# PYTHON_VERSION=python2.4
+libtuscany_sca_python_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L${PYTHON_LIB} -l${PYTHON_VERSION}
+
+INCLUDES = -Imodel -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I${PYTHON_INCLUDE}
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.cpp
new file mode 100644
index 0000000000..4744f628e0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.cpp
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "tuscany/sca/python/PythonExtension.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/python/PythonImplementationExtension.h"
+#include "tuscany/sca/python/PythonInterfaceExtension.h"
+
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::python::PythonExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ // ===================================================================
+ // Constructor for the PythonExtension class.
+ // ===================================================================
+ PythonExtension::PythonExtension()
+ {
+ LOGENTRY(1, "PythonExtension::constructor");
+ LOGEXIT(1, "PythonExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the PythonExtension class.
+ // ===================================================================
+ PythonExtension::~PythonExtension()
+ {
+ LOGENTRY(1, "PythonExtension::destructor");;
+ LOGEXIT(1, "PythonExtension::destructor");
+ }
+
+ void PythonExtension::initialize()
+ {
+ LOGENTRY(1, "PythonExtension::initialize");;
+ SCARuntime::getInstance()->registerImplementationExtension(new PythonImplementationExtension());
+ SCARuntime::getInstance()->registerInterfaceExtension(new PythonInterfaceExtension());
+ LOGEXIT(1, "PythonExtension::initialize");;
+ }
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.h
new file mode 100644
index 0000000000..783f37a228
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.h
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_python_pythonextension_h
+#define tuscany_sca_python_pythonextension_h
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ class PythonExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ PythonExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~PythonExtension();
+
+ static void initialize();
+
+ private:
+
+ };
+
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_pythonextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.cpp
new file mode 100644
index 0000000000..0623fb206c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.cpp
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "tuscany/sca/python/PythonImplementationExtension.h"
+#include "tuscany/sca/python/model/PythonImplementation.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ // ===================================================================
+ // Constructor for the PythonImplementationExtension class.
+ // ===================================================================
+ PythonImplementationExtension::PythonImplementationExtension()
+ {
+ LOGENTRY(1, "PythonImplementationExtension::constructor");
+ LOGEXIT(1, "PythonImplementationExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the PythonImplementationExtension class.
+ // ===================================================================
+ PythonImplementationExtension::~PythonImplementationExtension()
+ {
+ LOGENTRY(1, "PythonImplementationExtension::destructor");;
+ LOGEXIT(1, "PythonImplementationExtension::destructor");
+ }
+
+ const string PythonImplementationExtension::extensionName("python");
+ const string PythonImplementationExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#PythonImplementation");
+
+ // ===================================================================
+ // loadModelElement - load the info from implementation.python
+ // ===================================================================
+ ComponentType* PythonImplementationExtension::getImplementation(Composite *composite, DataObjectPtr scdlImplementation)
+ {
+ string implType = scdlImplementation->getType().getName();
+ if (implType == "PythonImplementation")
+ {
+ string module = scdlImplementation->getCString("module");
+ string path = scdlImplementation->getCString("path");
+ string className = scdlImplementation->getCString("class");
+ string scopeName = scdlImplementation->getCString("scope");
+
+ PythonImplementation::Scope scope;
+ if (scopeName == "composite")
+ {
+ scope = PythonImplementation::COMPOSITE;
+ }
+ else
+ {
+ scope = PythonImplementation::STATELESS;
+ }
+
+ PythonImplementation* pythonImpl = new PythonImplementation(composite, module, path, className, scope);
+
+ return pythonImpl;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.h
new file mode 100644
index 0000000000..69414dce22
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.h
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_python_pythonimplementationextension_h
+#define tuscany_sca_python_pythonimplementationextension_h
+
+#include "tuscany/sca/extension/ImplementationExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ class PythonImplementationExtension : public ImplementationExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ PythonImplementationExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~PythonImplementationExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#implementation.python")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ComponentType* getImplementation(Composite* composite, DataObjectPtr scdlImplementation);
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_pythonimplementationextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.cpp
new file mode 100644
index 0000000000..2a4c94b7af
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.cpp
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/python/PythonInterfaceExtension.h"
+#include "tuscany/sca/python/model/PythonInterface.h"
+#include "tuscany/sca/util/Logging.h"
+
+//#include "commonj/sdo/SDO.h"
+//using commonj::sdo::DataObjectList;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ // ===================================================================
+ // Constructor for the PythonInterfaceExtension class.
+ // ===================================================================
+ PythonInterfaceExtension::PythonInterfaceExtension()
+ {
+ LOGENTRY(1, "PythonInterfaceExtension::constructor");
+ LOGEXIT(1, "PythonInterfaceExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the PythonInterfaceExtension class.
+ // ===================================================================
+ PythonInterfaceExtension::~PythonInterfaceExtension()
+ {
+ LOGENTRY(1, "PythonInterfaceExtension::destructor");;
+ LOGEXIT(1, "PythonInterfaceExtension::destructor");
+ }
+
+ const string PythonInterfaceExtension::extensionName("python");
+ const string PythonInterfaceExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#PythonInterface");
+
+ // ===================================================================
+ // loadModelElement - load the info from interface.python
+ // ===================================================================
+ tuscany::sca::model::Interface* PythonInterfaceExtension::getInterface(Composite* composite, DataObjectPtr scdlInterface)
+ {
+ // Determine the type
+ string ifType = scdlInterface->getType().getName();
+ if (ifType == "PythonInterface")
+ {
+ bool remotable = scdlInterface->getBoolean("remotable");
+ bool conversational = scdlInterface->getBoolean("conversational");
+
+ return new PythonInterface(remotable, conversational);
+ //DataObjectList& operationList = scdlInterface->getList("operation");
+
+ //for(int i=0; i<operationList.size(); i++)
+ //{
+ // string opName = operationList[i]->getCString("name");
+
+ // if(operationList[i]->hasProperty("returnType"))
+ // {
+ // string returnType = operationList[i]->getCString("returnType");
+
+ // if(returnType == "string")
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::STRING);
+ // }
+ // else if(returnType == "int")
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::INT);
+ // }
+ // else if(returnType == "long")
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::LONG);
+ // }
+ // else if(returnType == "boolean")
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::BOOLEAN);
+ // }
+ // else if(returnType == "float")
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::FLOAT);
+ // }
+ // else if(returnType == "other")
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::OTHER);
+ // }
+ // else
+ // {
+ // pythonInterface->addOperation(opName, PythonInterface::NONE);
+ // }
+ // }
+ // else
+ // {
+ // // No return Type provided - set as NONE
+ // pythonInterface->addOperation(opName, PythonInterface::NONE);
+ // }
+ //}
+ //
+ //return pythonInterface;
+ }
+ return 0;
+ }
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.h
new file mode 100644
index 0000000000..3596857c0d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_python_pythoninterfaceextension_h
+#define tuscany_sca_python_pythoninterfaceextension_h
+
+#include "tuscany/sca/extension/InterfaceExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ class PythonInterfaceExtension : public InterfaceExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ PythonInterfaceExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~PythonInterfaceExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#PythonInterface")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual tuscany::sca::model::Interface* getInterface(Composite* composite, DataObjectPtr scdlInterface);
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_pythoninterfaceextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.cpp
new file mode 100644
index 0000000000..ef482f32e8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.cpp
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/python/PythonServiceProxy.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/python/PythonServiceRuntimeException.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/python/model/PythonImplementation.h"
+#include "tuscany/sca/python/model/PythonReferenceBinding.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ // ============================================
+ // Constructor: Create a proxy from a reference
+ // ============================================
+ PythonServiceProxy::PythonServiceProxy(Reference* reference)
+ : ServiceProxy(reference)
+ {
+ LOGENTRY(1,"PythonServiceProxy::constructor(Reference)");
+
+ // Get the service wrapper
+ PythonReferenceBinding* referenceBinding = (PythonReferenceBinding*)reference->getBinding();
+ serviceWrapper = referenceBinding->getTargetServiceBinding()->getServiceWrapper();
+
+ LOGEXIT(1,"PythonServiceProxy::constructor(Reference)");
+ }
+
+ // ==========================================
+ // Constructor: Create a proxy from a service
+ // ==========================================
+ PythonServiceProxy::PythonServiceProxy(Service* service)
+ : ServiceProxy(NULL)
+ {
+ LOGENTRY(1,"PythonServiceProxy::constructor(Service)");
+
+ // Get the service wrapper
+ serviceWrapper = service->getBinding()->getServiceWrapper();
+
+ LOGEXIT(1,"PythonServiceProxy::constructor(Service)");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ PythonServiceProxy::~PythonServiceProxy()
+ {
+ LOGENTRY(1,"PythonServiceProxy::destructor");
+ LOGEXIT(1,"PythonServiceProxy::destructor");
+ }
+
+ // =====================================================
+ // invokeService: invoke the service wired to this proxy
+ // =====================================================
+ void PythonServiceProxy::invokeService(Operation& operation)
+ {
+ LOGENTRY(1,"PythonServiceProxy::invokeService");
+
+ // Invoke the service
+ serviceWrapper->invoke(operation);
+
+ LOGEXIT(1,"PythonServiceProxy::invokeService");
+ }
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.h
new file mode 100644
index 0000000000..f16cb95609
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.h
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_python_pythonserviceproxy_h
+#define tuscany_sca_python_pythonserviceproxy_h
+
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/util/Library.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/Service.h"
+
+#include "export.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ /**
+ * Holds a proxy for a given reference from a component implemented in Python.
+ */
+ class PythonServiceProxy : public ServiceProxy
+ {
+ public:
+ /**
+ * Create a new service proxy for a reference. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The reference on the source component.
+ */
+ PythonServiceProxy(Reference* reference);
+
+ /**
+ * Create a new service proxy for a service. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param service The service on the target component.
+ */
+ SCA_PYTHON_API PythonServiceProxy(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PythonServiceProxy();
+
+ /**
+ * Invoke the wired service.
+ */
+ virtual void invokeService(Operation& operation);
+
+ private:
+
+ /**
+ * The target service wrapper
+ */
+ ServiceWrapper* serviceWrapper;
+ };
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_pythonserviceproxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceRuntimeException.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceRuntimeException.h
new file mode 100644
index 0000000000..aa8c88d06d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceRuntimeException.h
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_python_pythonserviceruntimeexception_h
+#define tuscany_sca_python_pythonserviceruntimeexception_h
+
+#include "export.h"
+
+#include "tuscany/sca/util/Exceptions.h"
+using tuscany::sca::TuscanyRuntimeException;
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ /**
+ * Exception to represent a failure in a Python call.
+ */
+ class SCA_PYTHON_API PythonServiceRuntimeException : public TuscanyRuntimeException
+ {
+ public:
+ PythonServiceRuntimeException(
+ const char *name="PythonServiceRuntimeException",
+ severity_level sev=Severe,
+ const char* msg_text="")
+ : TuscanyRuntimeException(name, sev, msg_text)
+ {
+ }
+ }; // End PythonServiceRuntimeException class definition
+
+ /**
+ * The target of a wire cannot be found, or the reference has not been
+ * configured.
+ */
+ class SCA_PYTHON_API PythonServiceNotFoundException: public PythonServiceRuntimeException
+ {
+ public:
+ PythonServiceNotFoundException(const char* msg)
+ : PythonServiceRuntimeException("PythonServiceNotFoundException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End PythonServiceNotFoundException class definition
+
+
+ /**
+ * There is no current component (for example, if a non-SCA component
+ * tries to get the current ComponentContext).
+ */
+ class SCA_PYTHON_API PythonComponentContextException: public PythonServiceRuntimeException
+ {
+ public:
+ PythonComponentContextException(const char* msg)
+ : PythonServiceRuntimeException("PythonComponentContextException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End PythonComponentContextException class definition
+
+ /**
+ * There is no current component (for example, if a non-SCA component
+ * tries to get the current ComponentContext).
+ */
+ class SCA_PYTHON_API PythonComponentInvocationException: public PythonServiceRuntimeException
+ {
+ public:
+ PythonComponentInvocationException(const char* msg)
+ : PythonServiceRuntimeException("ComponentInvocationException", Error,
+ msg)
+ {
+ }
+ private:
+ }; // End PythonComponentInvocationException class definition
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_pythonserviceruntimeexception_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp
new file mode 100644
index 0000000000..0223a5741d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp
@@ -0,0 +1,950 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/python/PythonServiceRuntimeException.h"
+#include "tuscany/sca/python/PythonServiceWrapper.h"
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/python/model/PythonImplementation.h"
+
+#include "commonj/sdo/SDO.h"
+using namespace commonj::sdo;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ /**
+ * Prints out PyObject and dir(PyObject)
+ * for debugging purposes
+ */
+ void printPyObject(char * name, PyObject *pObj)
+ {
+ PyObject* pObjRepr = PyObject_Repr(pObj);
+ LOGINFO_2(5, "PythonServiceWrapper::printPyObject %s: %s", name, PyString_AsString(pObjRepr));
+ Py_DECREF(pObjRepr);
+
+ PyObject* pObjDir = PyObject_Dir(pObj);
+ PyObject* pObjDirRepr = PyObject_Repr(pObjDir);
+ LOGINFO_2(5, "PythonServiceWrapper::printPyObject dir(%s): %s", name, PyString_AsString(pObjDirRepr));
+ Py_DECREF(pObjDirRepr);
+ Py_DECREF(pObjDir);
+ }
+
+ // ===========
+ // Constructor
+ // ===========
+ PythonServiceWrapper::PythonServiceWrapper(Service* service)
+ : ServiceWrapper(service)
+ {
+ LOGENTRY(1,"PythonServiceWrapper::constructor");
+
+ component = service->getComponent();
+ implementation = (PythonImplementation*)component->getType();
+
+ pythonModule = NULL;
+ pythonClassInstance = NULL;
+
+ // -----------------------------------------------
+ // Get the implementation for the target component
+ // -----------------------------------------------
+ PythonImplementation* impl = (PythonImplementation*)component->getType();
+ if (!impl)
+ {
+ string msg = "Component " + component->getName() + " has no implementation defined";
+ throw PythonServiceNotFoundException(msg.c_str());
+ }
+
+ LOGINFO_1(3,"PythonServiceWrapper::constructor module %s", impl->getModule().c_str());
+ LOGINFO_1(3,"PythonServiceWrapper::constructor path %s", impl->getModulePath().c_str());
+ LOGINFO_1(3,"PythonServiceWrapper::constructor class %s", impl->getClass().c_str());
+
+ // Initialize the Python environment
+ Py_Initialize();
+
+ // Add the path to the composite (+ any further path specified) to the Python sys.path
+ string path = component->getComposite()->getRoot() + "/" + impl->getModulePath();
+
+ PyObject* pSysName = PyString_FromString("sys");
+ PyObject* pSys = PyImport_Import(pSysName);
+ Py_DECREF(pSysName);
+
+ if(pSys != NULL)
+ {
+ PyObject* pSysPath = PyObject_GetAttrString(pSys, "path");
+
+ if(pSysPath != NULL && PyList_Check(pSysPath))
+ {
+ PyObject* pPath = PyString_FromString(path.c_str());
+ PyList_Append(pSysPath, pPath);
+
+
+ Py_DECREF(pPath);
+ Py_DECREF(pSysPath);
+ }
+ Py_DECREF(pSys);
+ }
+
+ if(&(impl->getModule()) != NULL && impl->getModule().size() > 0)
+ {
+ // Now import the module
+ PyObject* pModuleName = PyString_FromString(impl->getModule().c_str());
+
+ pythonModule = PyImport_Import(pModuleName);
+ Py_DECREF(pModuleName);
+ }
+
+ if (!pythonModule)
+ {
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Failed to load module named " + impl->getModule();
+ LOGERROR(0, msg.c_str());
+ throw PythonComponentContextException(msg.c_str());
+ }
+ //else
+ //{
+ // addReferences(pythonModule);
+ // addProperties(pythonModule);
+ //}
+
+ printPyObject("pythonModule",pythonModule);
+
+ LOGEXIT(1,"PythonServiceWrapper::constructor");
+
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ PythonServiceWrapper::~PythonServiceWrapper()
+ {
+ LOGENTRY(1,"PythonServiceWrapper::destructor");
+ Py_XDECREF(pythonClassInstance);
+ Py_XDECREF(pythonModule);
+ Py_Finalize();
+ LOGEXIT(1,"PythonServiceWrapper::destructor");
+ }
+
+ // ======================================================================
+ // newInstance: create a new class instance
+ // ======================================================================
+ PyObject* PythonServiceWrapper::newInstance()
+ {
+ LOGENTRY(1,"PythonServiceWrapper::newInstance");
+ PythonImplementation* impl = (PythonImplementation*)component->getType();
+ string className = impl->getClass();
+
+ PyObject* pClassInstance = NULL;
+ if (pythonModule != NULL)
+ {
+ if(&className != NULL && className.size() > 0)
+ {
+ // We have a class name, so create an instance and use this to invoke the correct function
+ PyObject* pClass = PyObject_GetAttrString(pythonModule, (char*) className.c_str());
+
+ if(pClass == NULL)
+ {
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Cannot find class named " + className + " in Python module";
+ LOGERROR(0, msg.c_str());
+ throw new PythonComponentInvocationException(msg.c_str());
+ }
+
+ pClassInstance = PyInstance_New(pClass, NULL, NULL);
+
+ if(pClassInstance == NULL || !PyInstance_Check(pClassInstance))
+ {
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Could not create new instance of class named " + className + " in Python module";
+ LOGERROR(0, msg.c_str());
+ throw new PythonComponentInvocationException(msg.c_str());
+ }
+ Py_XDECREF(pClass);
+ }
+ }
+ LOGEXIT(1,"PythonServiceWrapper::newInstance");
+ return pClassInstance;
+ }
+
+ // ======================================================================
+ // getInstance: get a class instance for this scope
+ // ======================================================================
+ PyObject* PythonServiceWrapper::getInstance()
+ {
+ LOGENTRY(1,"PythonServiceWrapper::getInstance");
+
+ PythonImplementation::Scope scope = implementation->getScope();
+ if (scope == PythonImplementation::COMPOSITE)
+ {
+ if (!pythonClassInstance)
+ {
+ pythonClassInstance = newInstance();
+ }
+ return pythonClassInstance;
+ }
+ else // (scope == PythonImplementation::STATELESS)
+ {
+ return newInstance();
+ }
+ LOGEXIT(1,"PythonServiceWrapper::getInstance");
+ }
+
+ // ======================================================================
+ // releaseImplementation: release the implementation for this scope
+ // ======================================================================
+ void PythonServiceWrapper::releaseInstance()
+ {
+ LOGENTRY(1,"PythonServiceWrapper::releaseInstance");
+
+ PythonImplementation::Scope scope = implementation->getScope();
+ if(scope == PythonImplementation::STATELESS)
+ {
+ // Delete the class instance if there is one
+ if(pythonClassInstance != NULL && PyInstance_Check(pythonClassInstance))
+ {
+ Py_DECREF(pythonClassInstance);
+ pythonClassInstance = NULL;
+ }
+
+ // Need to reload the module
+ PyObject* reloadedPythonModule = PyImport_ReloadModule(pythonModule);
+
+ if(reloadedPythonModule != NULL)
+ {
+ // Get rid of old pythonModule and replace with the reloaded one
+ Py_DECREF(pythonModule);
+ pythonModule = reloadedPythonModule;
+ }
+ }
+ LOGEXIT(1,"PythonServiceWrapper::releaseInstance");
+ }
+
+ // ======================================================================
+ // invoke: wrapper call to service with setting the component context
+ // ======================================================================
+ void PythonServiceWrapper::invoke(Operation& operation)
+ {
+ LOGENTRY(1,"PythonServiceWrapper::invoke");
+
+ SCARuntime* runtime = SCARuntime::getInstance();
+ runtime->setCurrentComponent(component);
+
+
+ // Load the references & properties into the module
+ addReferences(pythonModule);
+ addProperties(pythonModule);
+
+ try
+ {
+ LOGINFO_1(4, "PythonServiceWrapper::invoke called with operation name: %s", operation.getName().c_str());
+
+ PyObject* pFunc = NULL;
+ pythonClassInstance = getInstance();
+
+ if(pythonClassInstance != NULL && PyInstance_Check(pythonClassInstance))
+ {
+ // Get the function from the instance
+ pFunc = PyObject_GetAttrString(pythonClassInstance, (char*) operation.getName().c_str());
+ }
+ if(pFunc == NULL && pythonModule != NULL)
+ {
+ // Get the function directly from the module if it could not be got from an instance
+ pFunc = PyObject_GetAttrString(pythonModule, (char*) operation.getName().c_str());
+ }
+ if(pFunc == NULL)
+ {
+ // Can't get the function from the class or module - throw exception
+ string msg = "Python module or class instance has not been created";
+ LOGERROR(0, msg.c_str());
+ throw new PythonComponentInvocationException(msg.c_str());
+ }
+
+ if (pFunc && PyCallable_Check(pFunc))
+ {
+ PyObject* pArgs = PyTuple_New(operation.getNParms());
+ PyObject* pValue = NULL;
+
+ for(unsigned int i = 0; i < operation.getNParms(); i++)
+ {
+ const Operation::Parameter& parm = operation.getParameter(i);
+ switch(parm.getType())
+ {
+ case Operation::BOOL:
+ {
+ if( *(bool*)parm.getValue())
+ {
+ //boolean true
+ pValue = Py_True;
+ }
+ else
+ {
+ pValue = Py_False;
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ pValue = PyInt_FromLong(*(short*)parm.getValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ pValue = PyInt_FromLong(*(unsigned short*)parm.getValue());
+ break;
+ }
+ case Operation::INT:
+ {
+ pValue = PyInt_FromLong(*(int*)parm.getValue());
+ break;
+ }
+ case Operation::UINT:
+ {
+ pValue = PyInt_FromLong(*(unsigned int*)parm.getValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ pValue = PyLong_FromLong(*(long*)parm.getValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ pValue = PyLong_FromUnsignedLong(*(unsigned long*)parm.getValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ pValue = PyFloat_FromDouble(*(float*)parm.getValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ pValue = PyFloat_FromDouble(*(double*)parm.getValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ pValue = PyFloat_FromDouble(*(long double*)parm.getValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ pValue = PyString_FromString(*(char**)parm.getValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ pValue = PyString_FromString((*(string*)parm.getValue()).c_str());
+ break;
+ }
+ default: throw new PythonComponentInvocationException("Operation parameter type not supported");
+ }
+
+ if (!pValue)
+ {
+ Py_DECREF(pArgs);
+
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+
+ string msg = "Error converting parameter into Python type";
+ LOGERROR(0, msg.c_str());
+ throw new PythonComponentInvocationException(msg.c_str());
+
+ }
+ //printPyObject("Param value", pValue);
+
+ /* pValue reference stolen here: */
+ PyTuple_SetItem(pArgs, i, pValue);
+ }
+
+ pValue = PyObject_CallObject(pFunc, pArgs);
+ //printPyObject("Return value", pValue);
+
+ Py_DECREF(pArgs);
+ if (pValue != NULL)
+ {
+ char buf[20];
+ if(PyInt_Check(pValue) || PyLong_Check(pValue))
+ {
+ long* data = new long;
+ if(PyInt_Check(pValue))
+ {
+ LOGINFO_1(3, "PythonServiceWrapper::invoke Return value is int type: %d", PyInt_AsLong(pValue));
+ *data = PyInt_AsLong(pValue);
+ }
+ else
+ {
+ LOGINFO_1(3, "PythonServiceWrapper::invoke Return value is long type: %l", PyLong_AsLong(pValue));
+ *data = PyLong_AsLong(pValue);
+ }
+
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = (*data != 0);
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ sprintf(buf, "%d", *data);
+ *(char**)operation.getReturnValue() = buf;
+ break;
+ }
+ case Operation::STRING:
+ {
+ sprintf(buf, "%d", *data);
+ *(string*)operation.getReturnValue() = buf;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ }
+ else if(PyBool_Check(pValue))
+ {
+ LOGINFO_1(3, "PythonServiceWrapper::invoke Return value is bool type: %d", (pValue == Py_True));
+ bool* data = new bool;
+ *data = (pValue == Py_True);
+
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = *data;
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ if(*data)
+ {
+ *(char**)operation.getReturnValue() = "true";
+ }
+ else
+ {
+ *(char**)operation.getReturnValue() = "false";
+ }
+ break;
+ }
+ case Operation::STRING:
+ {
+ if(*data)
+ {
+ *(string*)operation.getReturnValue() = "true";
+ }
+ else
+ {
+ *(string*)operation.getReturnValue() = "false";
+ }
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ }
+ else if(PyFloat_Check(pValue))
+ {
+ LOGINFO_1(3, "PythonServiceWrapper::invoke Return value is float type: %f", PyFloat_AsDouble(pValue));
+
+ double* data = new double;
+ *data = PyFloat_AsDouble(pValue);
+
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = (*data != 0.0);
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ sprintf(buf, "%f", *data);
+ *(char**)operation.getReturnValue() = buf;
+ break;
+ }
+ case Operation::STRING:
+ {
+ sprintf(buf, "%f", *data);
+ *(string*)operation.getReturnValue() = buf;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ }
+ else if(PyString_Check(pValue))
+ {
+ LOGINFO_1(3, "PythonServiceWrapper::invoke Return value is string type: %s", PyString_AsString(pValue));
+ const char** data = new const char*;
+ *data = PyString_AsString(pValue);
+
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ // If the string is empty or "0" or "false" set to false, otherwise true
+ if(strlen(*data) == 0 || strcmp(*data, "0") == 0 || strcmp(*data, "false") == 0)
+ {
+ *(bool*)operation.getReturnValue() = false;
+ }
+ else
+ {
+ *(bool*)operation.getReturnValue() = true;
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)atoi(*data);
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)atoi(*data);
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)atoi(*data);
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)atoi(*data);
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)atol(*data);
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)atol(*data);
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)atof(*data);
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)atof(*data);
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)atof(*data);
+ break;
+ }
+ case Operation::CHARS:
+ {
+ *(const char**)operation.getReturnValue() = *data;
+ break;
+ }
+ case Operation::STRING:
+ {
+ *(string*)operation.getReturnValue() = *data;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ }
+ else
+ {
+ PyObject* valueRepr = PyObject_Repr(pValue);
+ PyObject* valueType = PyObject_Type(pValue);
+ PyObject* valueTypeRepr = PyObject_Repr(valueType);
+ LOGINFO_2(3, "PythonServiceWrapper::invoke Return value is of unknown type (%s) and has repr: %s", PyString_AsString(valueTypeRepr), PyString_AsString(valueRepr));
+ Py_DECREF(valueTypeRepr);
+ Py_DECREF(valueType);
+ Py_DECREF(valueRepr);
+ }
+
+ Py_DECREF(pValue);
+ }
+ else
+ {
+ Py_DECREF(pFunc);
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Error whilst calling Python module";
+ LOGERROR(0, msg.c_str());
+ throw new PythonComponentInvocationException(msg.c_str());
+ }
+ }
+ else
+ {
+ if (PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Cannot find the operation named " + operation.getName() + " in the Python module";
+ LOGERROR(0, msg.c_str());
+ throw new PythonComponentInvocationException(msg.c_str());
+ }
+ Py_XDECREF(pFunc);
+
+ }
+ catch (...)
+ {
+ releaseInstance();
+ runtime->unsetCurrentComponent();
+ throw;
+ }
+ releaseInstance();
+ runtime->unsetCurrentComponent();
+ LOGEXIT(1,"PythonServiceWrapper::invoke");
+
+ }
+
+
+ // ==========================================================================
+ // Add any properties into the loaded implementation module as Python objects
+ // ==========================================================================
+ void PythonServiceWrapper::addProperties(PyObject* module)
+ {
+ // Set all the configured properties
+ DataObjectPtr properties = component->getProperties();
+ PropertyList pl = properties->getInstanceProperties();
+
+ for (int i = 0; i < pl.size(); i++)
+ {
+ if (properties->isSet(pl[i]))
+ {
+ string propName = pl[i].getName();
+ string propValue = properties->getCString(pl[i]);
+ PyObject* property;
+
+ if(pl[i].isMany())
+ {
+ //TODO - deal with properties that are many
+ }
+
+ switch(pl[i].getTypeEnum())
+ {
+ case Type::BooleanType:
+ {
+ if(properties->getBoolean(pl[i]))
+ {
+ property = Py_True;
+ }
+ else
+ {
+ property = Py_False;
+ }
+ Py_INCREF(property);
+ break;
+ }
+ case Type::BigIntegerType:
+ case Type::BigDecimalType:
+ case Type::LongType:
+ {
+ property = PyLong_FromLongLong(properties->getLong(pl[i]));
+ break;
+ }
+ case Type::ShortType:
+ case Type::IntegerType:
+ {
+ property = PyInt_FromLong(properties->getInteger(pl[i]));
+ break;
+ }
+ case Type::DoubleType:
+ case Type::FloatType:
+ {
+ property = PyFloat_FromDouble(properties->getDouble(pl[i]));
+ break;
+ }
+ case Type::DataObjectType:
+ case Type::OpenDataObjectType:
+ {
+ // Serialize a DataObject and create a python string object from the XML
+ DataObjectPtr data = properties->getDataObject(pl[i]);
+ XMLHelperPtr helper = HelperProvider::getXMLHelper(properties->getDataFactory());
+ string serializedData = helper->save(data, "", propName);
+ property = PyString_FromString(serializedData.c_str());
+ break;
+ }
+ case Type::CharacterType:
+ case Type::StringType:
+ case Type::TextType:
+ case Type::UriType:
+ default:
+ {
+ // For strings and by default create a python string object
+ property = PyString_FromString(propValue.c_str());
+ break;
+ }
+ }
+
+ int success = PyModule_AddObject(module, (char*)propName.c_str(), property);
+
+ if(success == 0)
+ {
+ LOGINFO_3(3, "Successfully added property named %s with type %s and value %s to python module", propName.c_str(), pl[i].getType().getName(), propValue.c_str());
+ }
+ else
+ {
+ LOGERROR_1(1, "Failed to add property named %s to python module", propName.c_str());
+ }
+ }
+ }
+ }
+
+
+ // ======================================================================
+ // Add any references into the loaded implementation module as class instances that look like
+ // the classes defined in the interface.python xml
+ // ======================================================================
+ void PythonServiceWrapper::addReferences(PyObject* module)
+ {
+
+ // Import the TuscanySCA python-extension module
+ PyObject* pModuleName = PyString_FromString("sca_proxy");
+ PyObject* sca_proxy_module = PyImport_Import(pModuleName);
+ Py_DECREF(pModuleName);
+
+ if(!sca_proxy_module)
+ {
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Failed to load the sca_proxy Python module - has it been successfully installed?\nReferences from Python components will not be supported";
+ LOGERROR(0, msg.c_str());
+ }
+ else
+ {
+ // Get the sca_proxy class
+ PyObject* sca_proxy_class = PyObject_GetAttrString(sca_proxy_module, "sca_proxy_class");
+
+ // Iterate through the references of the current component, adding
+ // each reference to the module
+ Component::REFERENCE_MAP references = component->getReferences();
+ Component::REFERENCE_MAP::iterator pos;
+ for( pos = references.begin(); pos != references.end(); ++pos)
+ {
+ ReferenceType* referenceType = ((Reference*) pos->second)->getType();
+ string referenceName = referenceType->getName();
+
+ PyObject* tuscanySCAArgs = PyTuple_New(2);
+ PyObject* refName = PyString_FromString(referenceType->getName().c_str());
+ PyTuple_SetItem(tuscanySCAArgs, 0, refName);
+ Py_INCREF(Py_True);
+ PyTuple_SetItem(tuscanySCAArgs, 1, Py_True);
+
+ // Create the instance of the TuscanySCAReference class
+ PyObject* sca_proxy_classInstance = PyInstance_New(sca_proxy_class, tuscanySCAArgs, NULL);
+ Py_DECREF(tuscanySCAArgs);
+
+ int success = PyModule_AddObject(module, (char*)referenceName.c_str(), sca_proxy_classInstance);
+
+ if(success == 0)
+ {
+ LOGINFO_1(3, "Successfully added sca_proxy_class instance as %s to pythonModule", referenceName.c_str());
+ }
+ else
+ {
+ LOGERROR_1(1, "Failed to add sca_proxy_class instance as %s to pythonModule", referenceName.c_str());
+ }
+ }
+ Py_DECREF(sca_proxy_module);
+ }
+ }
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.h
new file mode 100644
index 0000000000..51b0f1dd64
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.h
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_python_pythonservicewrapper_h
+#define tuscany_sca_python_pythonservicewrapper_h
+
+#include "tuscany/sca/python/export.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/python/model/PythonImplementation.h"
+
+using namespace tuscany::sca::model;
+
+// undefine _DEBUG so Python does not need it's deebug dll
+#ifdef _DEBUG
+#undef _DEBUG
+#define _SCA_PYTHON_DEBUG
+#endif
+#include <Python.h>
+#ifdef _SCA_PYTHON_DEBUG
+#define _DEBUG
+#endif
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ class PythonInterface;
+
+ /**
+ * Wraps the service on a component implementation.
+ * This abstract class is extended by generated code which provides
+ * the implementation of some of the methods.
+ * An instance of this class wraps the actual component implementation which
+ * has been written by a developer of an SCA application.
+ */
+ class PythonServiceWrapper : public ServiceWrapper
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param target The component service to which this wrapper refers.
+ */
+ PythonServiceWrapper(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PythonServiceWrapper();
+
+ /**
+ * All business method calls to the target component go through the invoke method.
+ * @param operation The details of the method, paramaters and return value for the
+ * business method to be called on the target component.
+ */
+ virtual void invoke(Operation& operation);
+
+
+ protected:
+
+ /**
+ * Return the current instance of the python class.
+ * @return A pointer to an instance of the python class.
+ */
+ virtual PyObject* getInstance();
+
+ /**
+ * Creates a new instance of the python class.
+ * @return A pointer to a new instance of the python class.
+ */
+ virtual PyObject* newInstance();
+
+ /**
+ * Indicates that the current instance of the python module or class
+ * has been finished with.
+ */
+ virtual void releaseInstance();
+
+
+ private:
+ /**
+ * Holds a class instance if a classname is provided.
+ * Will be constructed each time if scope is set to STATELESS
+ */
+ PyObject* pythonClassInstance;
+
+ /**
+ * Holds the module
+ */
+ PyObject* pythonModule;
+
+ /**
+ * Adds references to the provided implementation module or class instance
+ */
+ void addReferences(PyObject* module);
+
+ /**
+ * Adds properties to the provided implementation module or class instance
+ */
+ void addProperties(PyObject* module);
+
+ /**
+ * The component to which this wrapper refers.
+ */
+ Component* component;
+
+ /**
+ * The component implementation
+ */
+ PythonImplementation* implementation;
+
+ };
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_pythonservicewrapper_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/export.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/export.h
new file mode 100644
index 0000000000..b608a50711
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/export.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_python_export_h
+#define tuscany_sca_python_export_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+
+#ifdef TUSCANY_SCA_PYTHON_EXPORTS
+#define SCA_PYTHON_API __declspec(dllexport)
+#else
+#define SCA_PYTHON_API __declspec(dllimport)
+#endif
+
+#else
+#include <sys/time.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#define SCA_PYTHON_API
+#endif
+
+#endif // tuscany_sca_export_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.cpp
new file mode 100644
index 0000000000..413d87173d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.cpp
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/python/model/PythonImplementation.h"
+#include "tuscany/sca/python/model/PythonServiceBinding.h"
+#include "tuscany/sca/python/model/PythonReferenceBinding.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/util/Utils.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace python
+ {
+
+ // Constructor
+ PythonImplementation::PythonImplementation(
+ Composite* composite, const string& module, const string& modulePath, const string& className, Scope scope)
+ : ComponentType(composite, modulePath + "/" + module),
+ module(module), modulePath(modulePath), className(className), scope(scope)
+ {
+ LOGENTRY(1,"PythonImplementation::constructor");
+ LOGEXIT(1,"PythonImplementation::constructor");
+ }
+
+ PythonImplementation::~PythonImplementation()
+ {
+ LOGENTRY(1,"PythonImplementation::destructor");
+ LOGEXIT(1,"PythonImplementation::destructor");
+ }
+
+ void PythonImplementation::initializeComponent(Component* component)
+ {
+ LOGENTRY(1,"PythonImplementation::initializeComponent");
+ ComponentType::initializeComponent(component);
+
+ // Create Python bindings for all the services
+ const Component::SERVICE_MAP& services = component->getServices();
+ Component::SERVICE_MAP::const_iterator iter = services.begin();
+ for (unsigned int i=0; i< services.size(); i++)
+ {
+ Service *service = iter->second;
+ PythonServiceBinding* binding = new PythonServiceBinding(service);
+ service->setBinding(binding);
+ iter++;
+ }
+
+ // Create Python bindings for all the references
+ const Component::REFERENCE_MAP& references = component->getReferences();
+ Component::REFERENCE_MAP::const_iterator refiter = references.begin();
+ for (int ri=0; ri< references.size(); ri++)
+ {
+ Reference *reference = refiter->second;
+ PythonReferenceBinding* binding = new PythonReferenceBinding(reference);
+ reference->setBinding(binding);
+ refiter++;
+ }
+
+ LOGEXIT(1,"PythonImplementation::initializeComponent");
+ }
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.h
new file mode 100644
index 0000000000..6d4cece5fd
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.h
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_python_model_pythonimplementation_h
+#define tuscany_sca_python_model_pythonimplementation_h
+#include "tuscany/sca/model/ComponentType.h"
+
+#include <map>
+using std::map;
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ /**
+ * Holds information about an SCA implementation written in Python
+ */
+ class PythonImplementation : public ComponentType
+ {
+
+ public:
+ /**
+ * Scope of the component implementation.
+ */
+ enum Scope
+ {
+ COMPOSITE,
+ STATELESS
+ };
+
+ /**
+ * Constructor.
+ * @param composite The composite containing this implementation.
+ * @param module Name of the module.
+ * @param modulePath Path to the module (could be a blank string
+ * if this is not specified).
+ * @param className Name of the class in the module (could be a blank string
+ * if this is not specified).
+ */
+ PythonImplementation(Composite* composite, const string& module, const string& modulePath, const string& className, Scope scope);
+
+ /**
+ * Destructor
+ */
+ virtual ~PythonImplementation();
+
+ /**
+ * Initialize a component of this type.
+ * @param component The component to initialize.
+ */
+ virtual void initializeComponent(Component* component);
+
+ /**
+ * Returns the name of the module.
+ * @return The name of the module.
+ */
+ const string& getModule() const { return module; }
+
+ /**
+ * Get the header path.
+ * @return The pathe element of the header.
+ */
+ const string& getModulePath() const { return modulePath; }
+
+ /**
+ * Get the name of the class.
+ * @return The class name if specified.
+ */
+ const string& getClass() const { return className; }
+
+ /**
+ * Returns the implementation scope
+ */
+ Scope getScope() const { return scope; }
+
+ private:
+
+ /**
+ * Name of the module.
+ */
+ string module;
+
+ /**
+ * Path to the module.
+ */
+ string modulePath;
+
+ /**
+ * Name of the class in the header file declaring the implementation.
+ * May be an empty string if not set in the SCDL file.
+ */
+ string className;
+
+ /**
+ * The implementation scope
+ */
+ Scope scope;
+ };
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_model_pythonimplementation_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.cpp
new file mode 100644
index 0000000000..6836158e0d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.cpp
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/python/export.h"
+#include "tuscany/sca/python/model/PythonInterface.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ const string PythonInterface::typeQName("http://www.osoa.org/xmlns/sca/1.0#PythonInterface");
+
+ // Constructor
+ PythonInterface::PythonInterface(
+ bool remotable,
+ bool conversational)
+ : Interface(remotable, conversational)
+ {
+ LOGENTRY(1, "PythonInterface::constructor");
+ LOGEXIT(1, "PythonInterface::constructor");
+ }
+
+ PythonInterface::~PythonInterface()
+ {
+ }
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.h
new file mode 100644
index 0000000000..ed42a3920d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.h
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_python_model_pythoninterface_h
+#define tuscany_sca_python_model_pythoninterface_h
+
+#include "tuscany/sca/python/export.h"
+#include "tuscany/sca/model/Interface.h"
+
+#include <map>
+using std::map;
+#include <vector>
+using std::vector;
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ /**
+ * Holds information about an interface described using a C++
+ * header file.
+ */
+ class PythonInterface : public Interface
+ {
+
+ public:
+ /**
+ * Constuctor.
+ * @param scope The scope of the interface (stateless or composite).
+ * @param remotable True if the interface is remotable.
+ */
+ PythonInterface(
+ bool remotable,
+ bool conversational);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PythonInterface();
+
+ /**
+ * return the QName of the schema type for this interface type
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#interface.cpp")
+ */
+ const string& getInterfaceTypeQName() { return typeQName; };
+
+ /**
+ * The QName of the schema type for this interface type.
+ */
+ SCA_PYTHON_API static const string typeQName;
+
+ };
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_model_pythoninterface_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.cpp
new file mode 100644
index 0000000000..82f5811203
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.cpp
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/python/model/PythonReferenceBinding.h"
+#include "tuscany/sca/python/PythonServiceProxy.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ // Constructor
+ PythonReferenceBinding::PythonReferenceBinding(Reference* reference)
+ : ReferenceBinding(reference, ""), serviceProxy(NULL)
+ {
+ }
+
+ // Destructor
+ PythonReferenceBinding::~PythonReferenceBinding()
+ {
+ }
+
+ ServiceProxy* PythonReferenceBinding::getServiceProxy()
+ {
+ return serviceProxy;
+ }
+
+ void PythonReferenceBinding::configure(ServiceBinding* binding)
+ {
+ targetServiceBinding = binding;
+
+ serviceProxy = new PythonServiceProxy(getReference());
+ }
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.h
new file mode 100644
index 0000000000..b37d261416
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.h
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_python_model_pythonreferencebinding_h
+#define tuscany_sca_python_model_pythonreferencebinding_h
+
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ /**
+ * Information about a Python service binding for service or a reference.
+ */
+ class PythonReferenceBinding : public ReferenceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ */
+ PythonReferenceBinding(Reference* reference);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PythonReferenceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#PythonImplementationBinding"; };
+
+ /**
+ * Create a proxy representing the reference to the
+ * client component.
+ */
+ virtual ServiceProxy* getServiceProxy();
+
+ /**
+ * Configure this binding from a service binding.
+ */
+ virtual void configure(ServiceBinding* serviceBinding);
+
+ /**
+ * Returns the target service binding.
+ */
+ ServiceBinding* getTargetServiceBinding() const { return targetServiceBinding; };
+
+ private:
+
+ /**
+ * The proxy representing the reference to the client
+ * component.
+ */
+ ServiceProxy* serviceProxy;
+
+ /**
+ * The service binding of the target
+ */
+ ServiceBinding* targetServiceBinding;
+ };
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_model_pythonreferencebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.cpp
new file mode 100644
index 0000000000..544682c18e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.cpp
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/python/model/PythonServiceBinding.h"
+#include "tuscany/sca/python/PythonServiceWrapper.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+
+ // Constructor
+ PythonServiceBinding::PythonServiceBinding(Service* service)
+ : ServiceBinding(service, "")
+ {
+ LOGENTRY(1,"PythonServiceBinding::constructor");
+ serviceWrapper = new PythonServiceWrapper(service);
+ LOGEXIT(1,"PythonServiceBinding::constructor");
+ }
+
+ // Destructor
+ PythonServiceBinding::~PythonServiceBinding()
+ {
+ LOGENTRY(1,"PythonServiceBinding::destructor");
+ LOGEXIT(1,"PythonServiceBinding::destructor");
+ }
+
+ ServiceWrapper* PythonServiceBinding::getServiceWrapper()
+ {
+ LOGENTRY(1,"PythonServiceBinding::getServiceWrapper");
+ LOGEXIT(1,"PythonServiceBinding::getServiceWrapper");
+ return (ServiceWrapper*)serviceWrapper;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.h
new file mode 100644
index 0000000000..f2d64b3edc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.h
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_python_model_pythonservicebinding_h
+#define tuscany_sca_python_model_pythonservicebinding_h
+
+#include "tuscany/sca/model/ServiceBinding.h"
+using namespace tuscany::sca::model;
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace python
+ {
+ /**
+ * Information about a Python service binding for service or a reference.
+ */
+ class PythonServiceBinding : public ServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ * @param port The definition of the port to which the entrypoint
+ * or external service is to be bound. This is of the form
+ * "namespace"#endpoint("service"/"port")
+ */
+ PythonServiceBinding(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~PythonServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#PythonImplementationBinding"; };
+
+ /**
+ * Create a wrapper for the service configured by this
+ * binding.
+ */
+ virtual ServiceWrapper* getServiceWrapper();
+
+ private:
+
+ /**
+ * The wrapper for the service configured by this binding.
+ */
+ ServiceWrapper* serviceWrapper;
+
+ };
+
+ } // End namespace python
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_python_model_pythonservicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_module.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_module.cpp
new file mode 100644
index 0000000000..d3a92ba57b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_module.cpp
@@ -0,0 +1,380 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include <Python.h>
+
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/core/Operation.h"
+using namespace tuscany::sca;
+using namespace tuscany::sca::model;
+
+#include "PythonServiceProxy.h"
+using namespace tuscany::sca::python;
+
+#include "tuscany/sca/util/Logging.h"
+
+#include <string>
+#include <iostream>
+using namespace std;
+
+static PyObject* scaError;
+
+/**
+* Prints out PyObject and dir(PyObject)
+* for debugging purposes
+*/
+static void printPyObject(char* prefix, char* name, PyObject* pObj)
+{
+ LOGINFO(4, "Entering printPyObject");
+ PyObject* pObjRepr = PyObject_Repr(pObj);
+ LOGINFO_3(4, "%s printPyObject %s: %s", prefix, name, PyString_AsString(pObjRepr));
+ Py_XDECREF(pObjRepr);
+
+ if(pObj != NULL)
+ {
+ PyObject* pObjDir = PyObject_Dir(pObj);
+ PyObject* pObjDirRepr = PyObject_Repr(pObjDir);
+ LOGINFO_3(4, "%s printPyObject dir(%s): %s", prefix, name, PyString_AsString(pObjDirRepr));
+ Py_DECREF(pObjDirRepr);
+ Py_DECREF(pObjDir);
+ }
+ LOGINFO(4, "Returning from printPyObject");
+}
+
+static PyObject* sca_locateservice(PyObject *self, PyObject *args)
+{
+ // Get the service name
+ PyObject* pServiceName = PyTuple_GetItem(args, 0);
+
+ // Import the SCA python-extension module
+ PyObject* pModuleName = PyString_FromString("sca_proxy");
+ PyObject* sca_proxy_module = PyImport_Import(pModuleName);
+ Py_DECREF(pModuleName);
+
+ if(!sca_proxy_module)
+ {
+ if(PyErr_Occurred())
+ {
+ PyErr_Print();
+ }
+ string msg = "Failed to load the sca_proxy Python module - has it been successfully installed?\nReferences from Python components will not be supported";
+ LOGERROR(0, msg.c_str());
+ }
+ else
+ {
+ // Get the sca_proxy class
+ PyObject* sca_proxy_class = PyObject_GetAttrString(sca_proxy_module, "sca_proxy_class");
+
+ PyObject* scaArgs = PyTuple_New(2);
+ PyTuple_SetItem(scaArgs, 0, pServiceName);
+ Py_INCREF(Py_True);
+ PyTuple_SetItem(scaArgs, 1, Py_False);
+
+ // Create the instance of the scaReference class
+ PyObject* sca_proxy_classInstance = PyInstance_New(sca_proxy_class, scaArgs, NULL);
+ Py_DECREF(scaArgs);
+
+ return sca_proxy_classInstance;
+ }
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+
+static PythonServiceProxy* getServiceProxy(PyObject *args)
+{
+ LOGENTRY(1, "sca_module getPythonServiceProxy");
+
+ PythonServiceProxy* serviceProxy = NULL;
+ SCARuntime* runtime = SCARuntime::getInstance();
+
+ // The first argument holds the name
+ string name;
+ PyObject* pName = PyTuple_GetItem(args, 0);
+ if(pName && PyString_Check(pName))
+ {
+ name = PyString_AsString(pName);
+ }
+ if(name.size() > 0)
+ {
+ LOGINFO_1(3, "sca_invoke Service/Reference name is %s", name.c_str());
+ }
+ else
+ {
+ string msg = "sca_invoke Service/Reference name has not been set";
+ LOGERROR(1, msg.c_str());
+ PyErr_SetString(scaError, msg.c_str());
+ return NULL;
+ }
+
+ // The second argument is a boolean
+ PyObject* isReference = PyTuple_GetItem(args, 1);
+
+ // Get the serviceProxy from the reference or service name provided
+ if(PyObject_IsTrue(isReference))
+ {
+ Component* component = runtime->getCurrentComponent();
+ Reference* ref = component->findReference(name);
+ if(!ref)
+ {
+ string msg = "sca_invoke Could not find the reference named "+name;
+ LOGERROR(1, msg.c_str());
+ PyErr_SetString(scaError, msg.c_str());
+
+ return NULL;
+ }
+
+ ReferenceBinding* refBinding = ref->getBinding();
+ serviceProxy = (PythonServiceProxy*) refBinding->getServiceProxy();
+ }
+ else
+ {
+ Component* component = runtime->getDefaultComponent();
+ Composite* composite = (Composite*)component->getType();
+ Service* service = composite->findComponentService(name);
+
+ if(!service)
+ {
+ string msg = "sca_invoke Could not find the service named "+name;
+ LOGERROR(1, msg.c_str());
+ PyErr_SetString(scaError, msg.c_str());
+ return NULL;
+ }
+
+ serviceProxy = new PythonServiceProxy(service);
+ }
+
+ return serviceProxy;
+}
+
+
+static PyObject* sca_invoke(PyObject *self, PyObject *args)
+{
+ LOGENTRY(1, "sca_invoke");
+
+ PythonServiceProxy* pythonServiceProxy = getServiceProxy(args);
+ if(!pythonServiceProxy)
+ {
+ return NULL;
+ }
+
+ // Get the name of the operation to invoke
+ string operationName;
+ PyObject* opName = PyTuple_GetItem(args, 2);
+ if(opName && PyString_Check(opName))
+ {
+ operationName = PyString_AsString(opName);
+ }
+
+ if(operationName.size() > 0)
+ {
+ LOGINFO_1(3, "sca_invoke Operation name is %s", operationName.c_str());
+ }
+ else
+ {
+ string msg = "sca_invoke Operation name has not been set";
+ LOGERROR(1, msg.c_str());
+ PyErr_SetString(scaError, msg.c_str());
+ return NULL;
+ }
+
+ // Create the Operation object
+ Operation operation(operationName.c_str());
+
+ // Parameters are the fourth argument
+ PyObject* paramTuple = PyTuple_GetItem(args, 3);
+
+ // Go through the supplied parameters
+ for(int i=0; i < PyTuple_Size(paramTuple); i++)
+ {
+ PyObject* param = PyTuple_GetItem(paramTuple, i);
+
+ if(PyInt_Check(param))
+ {
+ LOGINFO_2(3, "sca_invoke Param %d is int type: %d", i, PyInt_AsLong(param));
+ long* intData = new long;
+ *intData = PyInt_AsLong(param);
+ operation.addParameter(intData);
+ }
+ else if(PyBool_Check(param))
+ {
+ LOGINFO_2(3, "sca_invoke Param %d is bool type: %d", i, (param == Py_True));
+ bool* boolData = new bool;
+ *boolData = (param == Py_True);
+ operation.addParameter(boolData);
+ }
+ else if(PyLong_Check(param))
+ {
+ LOGINFO_2(3, "sca_invoke Param %d is long type: %l", i, PyLong_AsLong(param));
+ long* longData = new long;
+ *longData = PyLong_AsLong(param);
+ operation.addParameter(longData);
+ }
+ else if(PyFloat_Check(param))
+ {
+ LOGINFO_2(3, "sca_invoke Param %d is float type: %f", i, PyFloat_AsDouble(param));
+ double* doubleData = new double;
+ *doubleData = PyFloat_AsDouble(param);
+ operation.addParameter(doubleData);
+ }
+ else if(PyString_Check(param))
+ {
+ LOGINFO_2(3, "sca_invoke %d is string type: %s", i, PyString_AsString(param));
+ const char** stringData = new const char*;
+ *stringData = PyString_AsString(param);
+ operation.addParameter(stringData);
+ }
+ else
+ {
+ PyObject* paramRepr = PyObject_Repr(param);
+ PyObject* paramType = PyObject_Type(param);
+ PyObject* paramTypeRepr = PyObject_Repr(paramType);
+
+ string msg = "sca_invoke Param ";
+ msg += i;
+ msg += "is of unknown type (";
+ msg += PyString_AsString(paramTypeRepr);
+ msg += ") and has repr: ";
+ msg += PyString_AsString(paramRepr);
+
+ LOGERROR(1, msg.c_str());
+ PyErr_SetString(scaError, msg.c_str());
+
+ Py_DECREF(paramTypeRepr);
+ Py_DECREF(paramType);
+ Py_DECREF(paramRepr);
+
+ return NULL;
+ }
+ }
+
+ PyObject* returnValue = NULL;
+
+ try
+ {
+ // Invoke the wired service
+ pythonServiceProxy->invokeService(operation);
+ }
+ catch(...)
+ {
+ string msg = "sca_invoke Exception thrown whilst invoking the service";
+ LOGERROR(1, msg.c_str());
+ PyErr_SetString(scaError, msg.c_str());
+ return NULL;
+ }
+
+
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ if(*(bool*)operation.getReturnValue())
+ {
+ returnValue = Py_True;
+ }
+ else
+ {
+ returnValue = Py_False;
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ returnValue = PyInt_FromLong(*(short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ returnValue = PyLong_FromLong(*(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ returnValue = PyInt_FromLong(*(unsigned short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ returnValue = PyLong_FromLong(*(unsigned long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ returnValue = PyFloat_FromDouble(*(float*)operation.getReturnValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ returnValue = PyFloat_FromDouble(*(double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ returnValue = PyFloat_FromDouble(*(long double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ returnValue = PyString_FromString(*(char**)operation.getReturnValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ returnValue = PyString_FromString((*(string*)operation.getReturnValue()).c_str());
+ break;
+ }
+ default:
+ {
+ Py_INCREF(Py_None);
+ returnValue = Py_None;
+ }
+
+ }
+
+ LOGEXIT(1, "sca_invoke");
+ return returnValue;
+}
+static PyMethodDef ModuleMethods[] =
+{
+ {"locateservice", sca_locateservice, METH_VARARGS, "Locates an SCA service & returns an sca_proxy_class instance"},
+ {"invoke", sca_invoke, METH_VARARGS, "Invoke an operation on an SCA service or reference"},
+ {NULL, NULL, 0, NULL} /* Sentinel */
+};
+
+PyMODINIT_FUNC initsca(void)
+{
+ LOGENTRY(1, "initsca");
+
+ // Create a new module
+ PyObject* module = Py_InitModule("sca", ModuleMethods);
+
+ scaError = PyErr_NewException("sca.error", NULL, NULL);
+ Py_INCREF(scaError);
+ PyModule_AddObject(module, "error", scaError);
+
+ LOGEXIT(1, "initsca");
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_proxy.py b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_proxy.py
new file mode 100644
index 0000000000..1846bf994d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_proxy.py
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+#
+#
+# This Python code is used in the SCA package and
+# provides the proxy objects to a Python SCA component or SCA
+# client.
+#
+# This is done by overloading the __getattr__ method which makes
+# calls to myProxy.anyMethod go to __getattr__ which will return
+# the invokeFunction defined inside the invoke method
+
+import sca
+
+class sca_proxy_class:
+
+ sca_proxy_name = ''
+ sca_proxy_is_reference = 1
+
+ def __init__(self, name, isReference):
+ self.sca_proxy_name = name
+ self.sca_proxy_is_reference = isReference
+ return
+
+ def invoke(self, operationName):
+
+ def invokeFunction(*args,**kwargs):
+ return sca.invoke(self.sca_proxy_name, self.sca_proxy_is_reference, operationName, args)
+
+ return invokeFunction
+
+ def __getattr__(self, operationName):
+ return self.invoke(operationName)
+
+ def __str__(self):
+ return '<sca_proxy.sca_proxy_class instance for ' + self.sca_proxy_name + '>'
+
+ def __repr__(self):
+ return '<sca_proxy.sca_proxy_class instance for ' + self.sca_proxy_name + '>'
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_setup.py b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_setup.py
new file mode 100644
index 0000000000..9363d5533f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/src/tuscany/sca/python/sca_setup.py
@@ -0,0 +1,60 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+#
+#
+# This Python code builds and/or installs the sca and
+# sca_proxy extension modules
+#
+# Build/install with the following comands:
+# python scaSetup.py build
+# python scaSetup.py install
+#
+#
+
+from distutils.core import setup, Extension, os
+
+TUSCANY_SCACPP = os.environ.get("TUSCANY_SCACPP")
+print 'Using TUSCANY_SCACPP at ' + TUSCANY_SCACPP
+
+TUSCANY_SDOCPP = os.environ.get("TUSCANY_SDOCPP")
+print 'Using TUSCANY_SDOCPP at ' + TUSCANY_SDOCPP
+
+macros = []
+if os.name == 'nt':
+ macros = [ ('WIN32',None) ]
+
+module1 = Extension('sca',
+ define_macros = macros,
+ sources = ['sca_module.cpp'],
+ include_dirs = [ TUSCANY_SCACPP + '/include',
+ TUSCANY_SCACPP + '/extensions/python/include',
+ TUSCANY_SDOCPP + '/include'],
+ libraries = ['tuscany_sca',
+ 'tuscany_sdo',
+ 'tuscany_sca_python'],
+ library_dirs = [ TUSCANY_SCACPP + '/lib',
+ TUSCANY_SCACPP + '/extensions/python/lib',
+ TUSCANY_SDOCPP + '/lib'])
+
+setup (name = 'sca',
+ version = '1.0',
+ description = 'The Tuscany SCA package',
+ url='http://incubator.apache.org/tuscany/',
+ ext_modules = [module1],
+ py_modules = ['sca_proxy'])
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-implementation-python.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-implementation-python.xsd
new file mode 100644
index 0000000000..e1c7247992
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-implementation-python.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+
+ <element name="implementation.python" type="sca:PythonImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="PythonImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="module" type="NCName" use="required"/>
+ <attribute name="path" type="NCName" use="optional"/>
+ <attribute name="class" type="Name" use="optional"/>
+ <attribute name="scope" type="sca:PythonImplementationScope" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <simpleType name="PythonImplementationScope">
+ <restriction base="string">
+ <enumeration value="stateless" />
+ <enumeration value="composite" />
+ </restriction>
+ </simpleType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-interface-python.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-interface-python.xsd
new file mode 100644
index 0000000000..dd9075c7fb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/python/xsd/sca-interface-python.xsd
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="interface.python" type="sca:PythonInterface" substitutionGroup="sca:interface"/>
+ <complexType name="PythonInterface">
+ <complexContent>
+ <extension base="sca:Interface">
+ <sequence>
+ <element name="operation" type="sca:PythonOperation" minOccurs="0" maxOccurs="unbounded" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="remotable" type="boolean" use="optional" />
+ <attribute name="conversational" type="boolean" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="PythonOperation">
+ <complexContent>
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="string" use="required" />
+ <attribute name="returnType" type="sca:PythonReturnTypes" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexContent>
+ </complexType>
+
+ <simpleType name="PythonReturnTypes">
+ <restriction base="string">
+ <enumeration value="string" />
+ <enumeration value="int" />
+ <enumeration value="long" />
+ <enumeration value="boolean" />
+ <enumeration value="float" />
+ <enumeration value="other" />
+ </restriction>
+ </simpleType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/Makefile.am
new file mode 100644
index 0000000000..ac176d8811
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
+
+datadir=$(prefix)/extensions/ruby
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/deploy.bat
new file mode 100644
index 0000000000..176ac4640d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/deploy.bat
@@ -0,0 +1,71 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set rubyextdir=%extdir%\ruby
+set srcdir=%rootdir%\runtime\extensions\ruby\src
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %rubyextdir% mkdir %rubyextdir%
+if not exist %rubyextdir%\bin mkdir %rubyextdir%\bin
+if not exist %rubyextdir%\lib mkdir %rubyextdir%\lib
+if not exist %rubyextdir%\include mkdir %rubyextdir%\include
+if not exist %rubyextdir%\include\tuscany mkdir %rubyextdir%\include\tuscany
+if not exist %rubyextdir%\include\tuscany\sca mkdir %rubyextdir%\include\tuscany\sca
+if not exist %rubyextdir%\include\tuscany\sca\ruby mkdir %rubyextdir%\include\tuscany\sca\ruby
+if not exist %rubyextdir%\include\tuscany\sca\ruby\model mkdir %rubyextdir%\include\tuscany\sca\ruby\model
+if not exist %rubyextdir%\xsd mkdir %rubyextdir%\xsd
+
+del %rubyextdir%\bin\tuscany_sca_ruby.*
+del %rubyextdir%\lib\*.lib
+
+copy %srcdir%\tuscany\sca\ruby\*.h %rubyextdir%\include\tuscany\sca\ruby
+copy %srcdir%\tuscany\sca\ruby\model\*.h %rubyextdir%\include\tuscany\sca\ruby\model
+
+copy %srcdir%\..\xsd\*.* %rubyextdir%\xsd
+
+copy %inpath%\tuscany_sca_ruby.lib %rubyextdir%\lib
+copy %inpath%\tuscany_sca_ruby.dll %rubyextdir%\bin
+
+if exist %inpath%\tuscany_sca_ruby.pdb copy %inpath%\tuscany_sca_ruby.pdb %rubyextdir%\bin
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/Makefile.am
new file mode 100644
index 0000000000..9b5bfea386
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/Makefile.am
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/ruby/lib
+lib_LTLIBRARIES = libtuscany_sca_ruby.la
+
+install-exec-hook:
+ cd $(libdir); ln -s -f libtuscany_sca_ruby.so tuscany_sca_ruby.so
+
+includedir=$(prefix)/extensions/ruby/include
+nobase_include_HEADERS = \
+tuscany/sca/ruby/*.h \
+tuscany/sca/ruby/model/*.h
+
+libtuscany_sca_ruby_la_SOURCES = \
+tuscany/sca/ruby/RubyExtension.cpp \
+tuscany/sca/ruby/RubyImplementationExtension.cpp \
+tuscany/sca/ruby/RubyServiceProxy.cpp \
+tuscany/sca/ruby/RubyServiceWrapper.cpp \
+tuscany/sca/ruby/model/RubyImplementation.cpp \
+tuscany/sca/ruby/model/RubyReferenceBinding.cpp \
+tuscany/sca/ruby/model/RubyServiceBinding.cpp \
+tuscany/sca/ruby/RubyCompositeContext.cpp
+
+libtuscany_sca_ruby_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L${RUBY_LIB} -lruby
+
+INCLUDES = -Imodel -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I${RUBY_INCLUDE}
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/Ruby.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/Ruby.h
new file mode 100644
index 0000000000..a6b8ee8ffa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/Ruby.h
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_ruby_ruby_h
+#define tuscany_sca_ruby_ruby_h
+
+// Ruby inists on MS VC6 ... we'll see about that!
+#if defined(WIN32) || defined (_WINDOWS)
+#define _REAL_MSC_VER _MSC_VER
+#undef _MSC_VER
+#define _MSC_VER 1200
+#endif
+
+#include <ruby.h>
+
+#if defined(WIN32) || defined (_WINDOWS)
+#undef _MSC_VER
+#define _MSC_VER _REAL_MSC_VER
+#endif
+
+#endif // tuscany_sca_ruby_ruby_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyCompositeContext.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyCompositeContext.cpp
new file mode 100644
index 0000000000..148bccc025
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyCompositeContext.cpp
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/ruby/RubyServiceProxy.h"
+
+using namespace tuscany::sca::ruby;
+
+extern "C"
+{
+
+ // Implement the Sca::locateService module function
+ SCA_RUBY_API VALUE tuscany_sca_ruby_locateService(VALUE module, VALUE value)
+ {
+
+ // Get the default component
+ Component* defaultComponent = tuscany::sca::SCARuntime::getInstance()->getDefaultComponent();
+ Composite* composite = (Composite*)defaultComponent->getType();
+
+ // Locate the service
+ const char* serviceName = rb_string_value_cstr(&value);
+ Service* service = composite->findComponentService(serviceName);
+ string msg;
+ if (!service)
+ {
+ string msg = "Service not found: ";
+ msg = msg + serviceName;
+ rb_raise(rb_eRuntimeError, msg.c_str());
+ }
+
+ // Get a Proxy for this service
+ RubyServiceProxy* serviceProxy = new RubyServiceProxy(service);
+
+ // Return the Ruby proxy value object
+ return serviceProxy->getProxyValue();
+ }
+
+ // Initialize the Ruby extension
+ SCA_RUBY_API void Init_tuscany_sca_ruby()
+ {
+
+ // Define the Sca::locateService() function
+ VALUE module = rb_define_module("SCA");
+ rb_define_module_function(module, "locateService", (VALUE(*)(ANYARGS))tuscany_sca_ruby_locateService, 1);
+
+ }
+
+ SCA_RUBY_API void Init_libtuscany_sca_ruby()
+ {
+ Init_tuscany_sca_ruby();
+ }
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.cpp
new file mode 100644
index 0000000000..7153ef4fb1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.cpp
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/ruby/RubyExtension.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/ruby/RubyImplementationExtension.h"
+
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::ruby::RubyExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+ // ===================================================================
+ // Constructor for the RubyExtension class.
+ // ===================================================================
+ RubyExtension::RubyExtension()
+ {
+ LOGENTRY(1, "RubyExtension::constructor");
+ LOGEXIT(1, "RubyExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the RubyExtension class.
+ // ===================================================================
+ RubyExtension::~RubyExtension()
+ {
+ LOGENTRY(1, "RubyExtension::destructor");;
+ LOGEXIT(1, "RubyExtension::destructor");
+ }
+
+ void RubyExtension::initialize()
+ {
+ LOGENTRY(1, "RubyExtension::initialize");;
+ SCARuntime::getInstance()->registerImplementationExtension(new RubyImplementationExtension());
+ LOGEXIT(1, "RubyExtension::initialize");;
+ }
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.h
new file mode 100644
index 0000000000..232431ca1e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.h
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_ruby_rubyextension_h
+#define tuscany_sca_ruby_rubyextension_h
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ class RubyExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ RubyExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~RubyExtension();
+
+ static void initialize();
+
+ private:
+
+ };
+
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_rubyextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.cpp
new file mode 100644
index 0000000000..2bc5f9d0d9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.cpp
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/ruby/RubyImplementationExtension.h"
+#include "tuscany/sca/ruby/model/RubyImplementation.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+ // ===================================================================
+ // Constructor for the RubyImplementationExtension class.
+ // ===================================================================
+ RubyImplementationExtension::RubyImplementationExtension()
+ {
+ LOGENTRY(1, "RubyImplementationExtension::constructor");
+ LOGEXIT(1, "RubyImplementationExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the RubyImplementationExtension class.
+ // ===================================================================
+ RubyImplementationExtension::~RubyImplementationExtension()
+ {
+ LOGENTRY(1, "RubyImplementationExtension::destructor");;
+ LOGEXIT(1, "RubyImplementationExtension::destructor");
+ }
+
+ const string RubyImplementationExtension::extensionName("ruby");
+ const string RubyImplementationExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#RubyImplementation");
+
+ // ===================================================================
+ // loadModelElement - load the info from implementation.ruby
+ // ===================================================================
+ ComponentType* RubyImplementationExtension::getImplementation(Composite *composite, DataObjectPtr scdlImplementation)
+ {
+ string implType = scdlImplementation->getType().getName();
+ if (implType == "RubyImplementation")
+ {
+ string module = scdlImplementation->getCString("module");
+ string className = scdlImplementation->getCString("class");
+ string script = scdlImplementation->getCString("script");
+
+ RubyImplementation* rubyImpl = new RubyImplementation(composite, module, className, script);
+
+ return rubyImpl;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.h
new file mode 100644
index 0000000000..a1c5f26a3e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_ruby_rubyimplementationextension_h
+#define tuscany_sca_ruby_rubyimplementationextension_h
+
+#include "tuscany/sca/extension/ImplementationExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ class RubyImplementationExtension : public ImplementationExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ RubyImplementationExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~RubyImplementationExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#implementation.ruby")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ComponentType* getImplementation(Composite* composite, DataObjectPtr scdlImplementation);
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_rubyimplementationextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.cpp
new file mode 100644
index 0000000000..228f1f8940
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.cpp
@@ -0,0 +1,374 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "tuscany/sca/ruby/RubyServiceProxy.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/ruby/model/RubyImplementation.h"
+#include "tuscany/sca/ruby/model/RubyReferenceBinding.h"
+
+extern "C"
+{
+
+ // Initialize a Ruby proxy
+ SCA_RUBY_API VALUE tuscany_sca_ruby_proxy_initialize(VALUE self, VALUE serviceProxy)
+ {
+ rb_iv_set(self, "@cppProxy", serviceProxy);
+ return self;
+ }
+
+ // Handle a method_missing message and dispatch to
+ // our C++ proxy
+ SCA_RUBY_API VALUE tuscany_sca_ruby_proxy_method_missing(int argc, VALUE* argv, VALUE self)
+ {
+ VALUE proxy = rb_iv_get(self, "@cppProxy");
+
+ // Get the target service wrapper
+ tuscany::sca::ruby::RubyServiceProxy *serviceProxy;
+ Data_Get_Struct(proxy, tuscany::sca::ruby::RubyServiceProxy, serviceProxy);
+
+ // Handle the invocation
+ return serviceProxy->invoke(argc, argv);
+
+ }
+
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ VALUE RubyServiceProxy::proxyClass = Qnil;
+
+ // ============================
+ // Constructor: Create a proxy
+ // ============================
+ RubyServiceProxy::RubyServiceProxy(Reference* reference)
+ : ServiceProxy(reference)
+ {
+ LOGENTRY(1,"RubyServiceProxy::constructor");
+
+ // ----------------------
+ // Get the component
+ // ----------------------
+ component = reference->getComponent();
+ string name = reference->getType()->getName();
+
+ // Get the service wrapper
+ RubyReferenceBinding* referenceBinding = (RubyReferenceBinding*)reference->getBinding();
+
+ serviceWrapper = referenceBinding->getTargetServiceBinding()->getServiceWrapper();
+
+ // Create the Ruby proxy
+ createProxy();
+
+ LOGEXIT(1,"RubyServiceProxy::constructor");
+ }
+
+ // ============================
+ // Constructor: Create a proxy
+ // ============================
+ RubyServiceProxy::RubyServiceProxy(Service* service)
+ : ServiceProxy(0)
+ {
+ LOGENTRY(1,"RubyServiceProxy::constructor");
+
+ // ----------------------
+ // Get the component
+ // ----------------------
+ component = service->getComponent();
+ string name = service->getType()->getName();
+
+ // Get the service wrapper
+ serviceWrapper = service->getBinding()->getServiceWrapper();
+
+ // Create the Ruby proxy
+ createProxy();
+
+ LOGEXIT(1,"RubyServiceProxy::constructor");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ RubyServiceProxy::~RubyServiceProxy()
+ {
+ LOGENTRY(1,"RubyServiceProxy::destructor");
+ LOGEXIT(1,"RubyServiceProxy::destructor");
+ }
+
+ void RubyServiceProxy::createProxy()
+ {
+ // Create the Ruby proxy class
+ if (RubyServiceProxy::proxyClass == Qnil)
+ {
+ VALUE module = rb_define_module("Tuscany");
+ proxyClass = rb_define_class_under(module, "ServiceProxy", rb_cObject);
+ rb_define_method(proxyClass, "initialize", (VALUE(*)(ANYARGS))tuscany_sca_ruby_proxy_initialize, 1);
+ rb_define_method(proxyClass, "method_missing", (VALUE(*)(ANYARGS))tuscany_sca_ruby_proxy_method_missing, -1);
+ }
+
+ // Create the Ruby proxy instance, pass the service wrapper to it
+ VALUE* args = new VALUE[1];
+ args[0] = Data_Wrap_Struct(rb_cObject, NULL, NULL, this);
+ proxyValue = rb_class_new_instance(1, args, proxyClass);
+
+ // Mark proxyValue busy so that it doesn't get GC'ed by Ruby
+ rb_gc_register_address(&proxyValue);
+ }
+
+
+ VALUE RubyServiceProxy::invoke(int argc, VALUE* argv)
+ {
+ // Get the method name
+ char* methodName = rb_id2name(SYM2ID(argv[0]));
+
+ // Get the block passed by the caller
+ VALUE block =rb_block_given_p() ? rb_block_proc() : Qnil;
+
+ // Create new Operation object
+ Operation operation(methodName);
+
+ // Convert the Ruby parameters to C++
+ for (int i = 1; i < argc; i++)
+ {
+ VALUE value = argv[i];
+
+ int valueType = TYPE(value);
+
+ switch (valueType)
+ {
+ case T_FLOAT:
+ {
+ float* data = new float;
+ *data = rb_num2dbl(value);
+ operation.addParameter(data);
+ break;
+ }
+ case T_STRING:
+ {
+ string* data = new string(rb_string_value_cstr(&value));
+ const char** cdata = new const char*;
+ *cdata = data->c_str();
+ operation.addParameter(cdata);
+ break;
+ }
+ case T_FIXNUM:
+ {
+ long* data = new long;
+ *data = rb_num2long(value);
+ operation.addParameter(data);
+ break;
+ }
+ case T_BIGNUM:
+ {
+ long double* data = new long double;
+ *data = rb_num2dbl(value);
+ operation.addParameter(data);
+ break;
+ }
+ case T_TRUE:
+ {
+ bool* data = new bool;
+ *data = true;
+ operation.addParameter(data);
+ break;
+ }
+ case T_FALSE:
+ {
+ bool* data = new bool;
+ *data = false;
+ operation.addParameter(data);
+ break;
+ }
+ case T_OBJECT:
+ {
+ VALUE klass = rb_obj_class(value);
+ if (klass == RubyImplementation::getXMLDocumentClass())
+ {
+ // Convert a REXML::Document to a DataObject
+ ID to_s = rb_intern("to_s");
+ VALUE vstr = rb_funcall(value, to_s, 0);
+ string str = string(rb_string_value_cstr(&vstr));
+
+ Composite* composite = getReference()->getComponent()->getComposite();
+ commonj::sdo::XMLHelper* xmlHelper = composite->getXMLHelper();
+ commonj::sdo::XMLDocumentPtr xmlDoc = xmlHelper->load(str.c_str());
+
+ DataObjectPtr dob;
+ if (xmlDoc != NULL)
+ {
+ dob = xmlDoc->getRootDataObject();
+ }
+ if (dob != NULL)
+ {
+ operation.addParameter(&dob);
+ }
+ else
+ {
+ string msg = "Document could not be converted to a DataObject";
+ rb_raise(rb_eTypeError, msg.c_str());
+ return Qnil;
+ }
+ }
+ else
+ {
+ string msg = "Ruby type not supported: " + valueType;
+ rb_raise(rb_eTypeError, msg.c_str());
+ return Qnil;
+ }
+ break;
+ }
+ default:;
+ string msg = "Ruby type not supported: " + valueType;
+ rb_raise(rb_eTypeError, msg.c_str());
+ return Qnil;
+ }
+
+ }
+
+ try
+ {
+ // Call into the target service wrapper
+ serviceWrapper->invoke(operation);
+
+ // Convert the result to a Ruby value
+ VALUE value;
+ Operation::ParameterType resultType = operation.getReturnType();
+ switch(resultType)
+ {
+ case Operation::BOOL:
+ {
+ if( *(bool*)operation.getReturnValue())
+ {
+ //boolean true
+ value = rb_int2inum(1);
+ }
+ else
+ {
+ value = rb_int2inum(0);
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ value = rb_int2inum(*(short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ value = rb_uint2inum(*(unsigned short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ value = rb_int2inum(*(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ value = rb_uint2inum(*(unsigned long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ value = rb_float_new(*(float*)operation.getReturnValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ value = rb_float_new(*(double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ value = rb_float_new(*(long double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ value = rb_str_new2(*(char**)operation.getReturnValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ value = rb_str_new2((*(string*)operation.getReturnValue()).c_str());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+ DataObjectPtr dob = *(DataObjectPtr*)operation.getReturnValue();
+
+ // Convert a DataObject to a REXML Document object
+ Composite* composite = component->getComposite();
+ commonj::sdo::XMLHelper* xmlHelper = composite->getXMLHelper();
+ char* str = xmlHelper->save(
+ dob,
+ dob->getType().getURI(),
+ dob->getType().getName());
+ VALUE vstr[1];
+ vstr[0] = rb_str_new2(str);
+
+ value = rb_class_new_instance(1, vstr, RubyImplementation::getXMLDocumentClass());
+ break;
+ }
+ default:
+ {
+ //throw new ComponentInvocationException("Operation parameter type not supported");
+ string msg = "Operation parameter type not supported" + resultType;
+ rb_raise(rb_eRuntimeError, msg.c_str());
+ return Qnil;
+ }
+ }
+
+ return value;
+
+ }
+ catch(TuscanyRuntimeException &ex)
+ {
+ string msg = "Exception while invoking a service: ";
+ msg += ex.getEClassName();
+ msg += ": ";
+ msg += ex.getMessageText();
+ rb_raise(rb_eRuntimeError, msg.c_str());
+ return Qnil;
+ }
+
+ return Qnil;
+ }
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.h
new file mode 100644
index 0000000000..f4692733f1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.h
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_ruby_rubyserviceproxy_h
+#define tuscany_sca_ruby_rubyserviceproxy_h
+
+#include "tuscany/sca/ruby/export.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/Service.h"
+
+using namespace tuscany::sca::model;
+
+#include "tuscany/sca/ruby/Ruby.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ /**
+ * Holds a proxy for a given component and reference.
+ * The proxy which is held inside a ServiceProxy will be specific to the component
+ * and reference and will have been code generated and be contained in a dll
+ * created by a developer of an SCA application.
+ */
+ class RubyServiceProxy : public ServiceProxy
+ {
+ public:
+ /**
+ * Create a new service proxy for a reference. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The reference on the source component.
+ * @param target The wrapper of the service which is wired to this reference.
+ */
+ RubyServiceProxy(Reference* reference);
+
+ /**
+ * Create a new service proxy for a service. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The service on the target component.
+ * @param target The wrapper of the target service.
+ */
+ RubyServiceProxy(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~RubyServiceProxy();
+
+ /**
+ * Returns the Ruby value of the proxy
+ */
+ VALUE getProxyValue() const { return proxyValue; };
+
+ /**
+ * Handles the invocation of a Ruby method.
+ */
+ VALUE invoke(int argc, VALUE* argv);
+
+ private:
+
+ /**
+ * Create the Ruby proxy object
+ */
+ void createProxy();
+
+ /**
+ * The target service wrapper
+ */
+ ServiceWrapper* serviceWrapper;
+
+ /**
+ * The Ruby value of the proxy
+ */
+ VALUE proxyValue;
+
+ /**
+ * The component owning the proxy
+ */
+ Component* component;
+
+ /**
+ * The Ruby proxy class
+ */
+ static VALUE proxyClass;
+
+ };
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_rubyserviceproxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp
new file mode 100644
index 0000000000..a0eb97142d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp
@@ -0,0 +1,724 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "tuscany/sca/ruby/RubyServiceWrapper.h"
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Library.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/ruby/model/RubyImplementation.h"
+#include "tuscany/sca/ruby/model/RubyServiceBinding.h"
+#include "tuscany/sca/ruby/RubyServiceProxy.h"
+#include "commonj/sdo/SDO.h"
+
+using commonj::sdo::PropertyList;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ // ===========
+ // Constructor
+ // ===========
+ RubyServiceWrapper::RubyServiceWrapper(Service* service)
+ : ServiceWrapper(service)
+ {
+ LOGENTRY(1,"RubyServiceWrapper::constructor");
+
+ component = service->getComponent();
+ implementation = (RubyImplementation*)component->getType();
+ interf = service->getType()->getInterface();
+
+ LOGEXIT(1,"RubyServiceWrapper::constructor");
+
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ RubyServiceWrapper::~RubyServiceWrapper()
+ {
+ LOGENTRY(1,"RubyServiceWrapper::destructor");
+ LOGEXIT(1,"RubyServiceWrapper::destructor");
+ }
+
+ // ======================================================================
+ // invoke: wrapper call to service with setting the component context
+ // ======================================================================
+ void RubyServiceWrapper::invoke(Operation& operation)
+ {
+ LOGENTRY(1,"RubyServiceWrapper::invoke");
+
+ SCARuntime* runtime = SCARuntime::getInstance();
+ runtime->setCurrentComponent(component);
+
+ try
+ {
+
+ // Create a new instance of the Ruby implementation class
+ VALUE instance = rb_class_new_instance(0, NULL, implementation->getImplementationClass());
+
+ // Set all the references
+ const Component::REFERENCE_MAP& references = component->getReferences();
+ Component::REFERENCE_MAP::const_iterator refiter = references.begin();
+ for (int ri=0; ri< references.size(); ri++)
+ {
+ Reference* reference = refiter->second;
+ RubyServiceProxy* proxy = (RubyServiceProxy*)reference->getBinding()->getServiceProxy();
+ if (proxy != NULL)
+ {
+ VALUE proxyValue = proxy->getProxyValue();
+ string varName = "@" + refiter->first;
+ rb_iv_set(instance, varName.c_str(), proxyValue);
+ }
+ refiter++;
+ }
+
+ // Set all the configured properties
+ DataObjectPtr properties = component->getProperties();
+ PropertyList pl = properties->getInstanceProperties();
+ for (int i = 0; i < pl.size(); i++)
+ {
+ if (properties->isSet(pl[i]))
+ {
+ string varName = "@";
+ varName += pl[i].getName();
+ string cstr = properties->getCString(pl[i]);
+ VALUE propertyValue;
+ if (cstr == "true")
+ {
+ propertyValue = Qtrue;
+ }
+ else if (cstr == "false")
+ {
+ propertyValue = Qfalse;
+ }
+ else
+ {
+ //TODO use one of the rb_str_to_inum() functions
+ // to convert a numeric value to a Ruby numeric
+ propertyValue = rb_str_new2(cstr.c_str());
+ }
+ rb_iv_set(instance, varName.c_str(), propertyValue);
+ }
+ }
+
+ // Get the ID of the specified method
+ ID method = rb_intern(operation.getName().c_str());
+
+ // Convert C++ parameters to Ruby parameters
+ VALUE *args = NULL;
+ int n = operation.getNParms();
+ if (n != 0)
+ {
+ args=new VALUE[n];
+
+ for(int i = 0; i < operation.getNParms(); i++)
+ {
+ VALUE value;
+
+ const Operation::Parameter& parm = operation.getParameter(i);
+ Operation::ParameterType parmType = parm.getType();
+ switch(parmType)
+ {
+ case Operation::BOOL:
+ {
+ if( *(bool*)parm.getValue())
+ {
+ //boolean true
+ value = rb_int2inum(1);
+ }
+ else
+ {
+ value = rb_int2inum(0);
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ value = rb_int2inum(*(short*)parm.getValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ value = rb_uint2inum(*(unsigned short*)parm.getValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ value = rb_int2inum(*(long*)parm.getValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ value = rb_uint2inum(*(unsigned long*)parm.getValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ value = rb_float_new(*(float*)parm.getValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ value = rb_float_new(*(double*)parm.getValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ value = rb_float_new(*(long double*)parm.getValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ value = rb_str_new2(*(char**)parm.getValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ value = rb_str_new2((*(string*)parm.getValue()).c_str());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+ DataObjectPtr dob = *(DataObjectPtr*)parm.getValue();
+
+ // Convert a DataObject to a REXML Document object
+ Composite* composite = component->getComposite();
+ commonj::sdo::XMLHelper* xmlHelper = composite->getXMLHelper();
+ char* str = xmlHelper->save(
+ dob,
+ dob->getType().getURI(),
+ dob->getType().getName());
+ VALUE vstr[1];
+ vstr[0] = rb_str_new2(str);
+
+ value = rb_class_new_instance(1, vstr, RubyImplementation::getXMLDocumentClass());
+ break;
+ }
+ default:
+ {
+ //throw new ComponentInvocationException("Operation parameter type not supported");
+ string msg = "Operation parameter type not supported" + parmType;
+ throw msg.c_str();
+ }
+ }
+
+ args[i] = value;
+ }
+ }
+
+
+ // Invoke the specified method
+ VALUE result;
+ if (n == 0)
+ {
+ result = rb_funcall(instance, method, 0);
+ }
+ else
+ {
+ result = rb_funcall2(instance, method, n, args);
+ }
+
+ // Convert the Ruby result value to a C++ result
+ int resultType = TYPE(result);
+ char buf[20];
+ switch(resultType)
+ {
+ case T_FLOAT:
+ {
+ float* data = new float;
+ *data = rb_num2dbl(result);
+
+ // Check if the return type has already been set for typed languages
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = (*data != 0.0);
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ sprintf(buf, "%f", *data);
+ *(char**)operation.getReturnValue() = buf;
+ break;
+ }
+ case Operation::STRING:
+ {
+ sprintf(buf, "%f", *data);
+ *(string*)operation.getReturnValue() = buf;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ break;
+ }
+ case T_STRING:
+ {
+ string* stringdata = new string(rb_string_value_cstr(&result));
+ const char** data = new const char*;
+ *data = stringdata->c_str();
+
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ // If the string is empty or "0" or "false" set to false, otherwise true
+ if(strlen(*data) == 0 || strcmp(*data, "0") == 0 || strcmp(*data, "false") == 0)
+ {
+ *(bool*)operation.getReturnValue() = false;
+ }
+ else
+ {
+ *(bool*)operation.getReturnValue() = true;
+ }
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)atoi(*data);
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)atoi(*data);
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)atoi(*data);
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)atoi(*data);
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)atol(*data);
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)atol(*data);
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)atof(*data);
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)atof(*data);
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)atof(*data);
+ break;
+ }
+ case Operation::CHARS:
+ {
+ *(const char**)operation.getReturnValue() = *data;
+ break;
+ }
+ case Operation::STRING:
+ {
+ *(string*)operation.getReturnValue() = *data;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ break;
+ }
+ case T_FIXNUM:
+ {
+ long* data = new long;
+ *data = rb_num2long(result);
+
+ // Check if the return type has already been (set for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = (*data != 0);
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ sprintf(buf, "%d", *data);
+ *(char**)operation.getReturnValue() = buf;
+ break;
+ }
+ case Operation::STRING:
+ {
+ sprintf(buf, "%d", *data);
+ *(string*)operation.getReturnValue() = buf;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+
+ break;
+ }
+ case T_BIGNUM:
+ {
+ long double* data = new long double;
+ *data = rb_num2dbl(result);
+
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = (*data != 0.0);
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ sprintf(buf, "%f", *data);
+ *(char**)operation.getReturnValue() = buf;
+ break;
+ }
+ case Operation::STRING:
+ {
+ sprintf(buf, "%f", *data);
+ *(string*)operation.getReturnValue() = buf;
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+ break;
+ }
+ case T_TRUE:
+ case T_FALSE:
+ {
+ bool* data = new bool;
+ *data = (resultType == T_TRUE);
+ // Check if the return type has already been set (for typed languages)
+ switch(operation.getReturnType())
+ {
+ case Operation::BOOL:
+ {
+ *(bool*)operation.getReturnValue() = *data;
+ break;
+ }
+ case Operation::SHORT:
+ {
+ *(short*)operation.getReturnValue() = (short)*data;
+ break;
+ }
+ case Operation::USHORT:
+ {
+ *(unsigned short*)operation.getReturnValue() = (unsigned short)*data;
+ break;
+ }
+ case Operation::INT:
+ {
+ *(int*)operation.getReturnValue() = (int)*data;
+ break;
+ }
+ case Operation::UINT:
+ {
+ *(unsigned int*)operation.getReturnValue() = (unsigned int)*data;
+ break;
+ }
+ case Operation::LONG:
+ {
+ *(long*)operation.getReturnValue() = (long)*data;
+ break;
+ }
+ case Operation::ULONG:
+ {
+ *(unsigned long*)operation.getReturnValue() = (unsigned long)*data;
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ *(float*)operation.getReturnValue() = (float)*data;
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ *(double*)operation.getReturnValue() = (double)*data;
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ *(long double*)operation.getReturnValue() = (long double)*data;
+ break;
+ }
+ case Operation::CHARS:
+ {
+ if(*data)
+ {
+ *(char**)operation.getReturnValue() = "true";
+ }
+ else
+ {
+ *(char**)operation.getReturnValue() = "false";
+ }
+ break;
+ }
+ case Operation::STRING:
+ {
+ if(*data)
+ {
+ *(string*)operation.getReturnValue() = "true";
+ }
+ else
+ {
+ *(string*)operation.getReturnValue() = "false";
+ }
+ break;
+ }
+ default:
+ {
+ // The type is set as something else or has not been set
+ operation.setReturnValue(data);
+ }
+ }
+
+ break;
+ }
+ case T_OBJECT:
+ {
+ VALUE klass = rb_obj_class(result);
+ if (klass == RubyImplementation::getXMLDocumentClass())
+ {
+ // Convert a REXML::Document to a DataObject
+ ID to_s = rb_intern("to_s");
+ VALUE vstr = rb_funcall(result, to_s, 0);
+ string str = string(rb_string_value_cstr(&vstr));
+
+ Composite* composite = component->getComposite();
+ commonj::sdo::XMLHelper* xmlHelper = composite->getXMLHelper();
+ commonj::sdo::XMLDocumentPtr xmlDoc = xmlHelper->load(str.c_str());
+
+ DataObjectPtr dob;
+ if (xmlDoc != NULL)
+ {
+ dob = xmlDoc->getRootDataObject();
+ }
+ if (dob != NULL)
+ {
+ operation.setReturnValue(&dob);
+ }
+ else
+ {
+ string msg = "Document could not be converted to a DataObject";
+ throw msg.c_str();
+ }
+ }
+ else
+ {
+ string msg = "Ruby type not supported: " + resultType;
+ throw msg.c_str();
+ }
+ break;
+ }
+ default:
+ {
+ string msg = "Ruby type not supported: " + resultType;
+ throw msg.c_str();
+ }
+ }
+
+ }
+ catch (...)
+ {
+ runtime->unsetCurrentComponent();
+ throw;
+ }
+ runtime->unsetCurrentComponent();
+ LOGEXIT(1,"RubyServiceWrapper::invoke");
+
+ }
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.h
new file mode 100644
index 0000000000..849bbdd33e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.h
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_ruby_rubyservicewrapper_h
+#define tuscany_sca_ruby_rubyservicewrapper_h
+
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/ruby/model/RubyImplementation.h"
+#include "tuscany/sca/ruby/export.h"
+
+#include "tuscany/sca/ruby/Ruby.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+ class RubyInterface;
+
+ /**
+ * Wraps the service on a component implementation.
+ * This abstract class is extended by generated code which provides
+ * the implementation of some of the methods.
+ * An instance of this class wraps the actual component implementation which
+ * has been written by a developer of an SCA application.
+ */
+ class SCA_RUBY_API RubyServiceWrapper : public ServiceWrapper
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param target The component service to which this wrapper refers.
+ */
+ RubyServiceWrapper(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~RubyServiceWrapper();
+
+ /**
+ * All business method calls to the target component go through the invoke method.
+ * @param operation The details of the method, paramaters and return value for the
+ * business method to be called on the target component.
+ */
+ virtual void invoke(Operation& operation);
+
+ private:
+
+ /**
+ * The component to which this wrapper refers.
+ */
+ Component* component;
+
+ /**
+ * A pointer to the interface which the service exposes.
+ */
+ Interface* interf;
+
+ /**
+ * The Ruby implementation
+ */
+ RubyImplementation* implementation;
+
+ };
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_rubyservicewrapper_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/export.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/export.h
new file mode 100644
index 0000000000..21f09dddfc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/export.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_ruby_export_h
+#define tuscany_sca_ruby_export_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+
+#ifdef TUSCANY_SCA_RUBY_EXPORTS
+#define SCA_RUBY_API __declspec(dllexport)
+#else
+#define SCA_RUBY_API __declspec(dllimport)
+#endif
+
+#else
+#define SCA_RUBY_API
+#endif
+
+#endif // tuscany_sca_ruby_export_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.cpp
new file mode 100644
index 0000000000..877b98e7b4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.cpp
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/ruby/model/RubyImplementation.h"
+#include "tuscany/sca/ruby/model/RubyServiceBinding.h"
+#include "tuscany/sca/ruby/model/RubyReferenceBinding.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/util/Utils.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace ruby
+ {
+
+ bool RubyImplementation::initialized = false;
+ VALUE RubyImplementation::xmlDocumentClass = 0;
+
+ // Constructor
+ RubyImplementation::RubyImplementation(Composite* composite, const string& module, const string& className, const string& script)
+ : ComponentType(composite, script.substr(0, script.find_last_of('.'))),
+ module(module), className(className), script(script)
+ {
+ loadClass();
+ }
+
+ RubyImplementation::~RubyImplementation()
+ {
+ }
+
+ void RubyImplementation::loadClass()
+ {
+ // Initialize the Ruby runtime
+ if (!initialized)
+ {
+ ruby_init();
+ ruby_init_loadpath();
+
+ // Load the Rexml module. Rexml is used to handle XML documents.
+ //rb_require("rexml/document");
+ // Use rb_eval_string for now as it provides better error reporting
+ rb_eval_string("require(\"rexml/document\")");
+
+ xmlDocumentClass = rb_path2class("REXML::Document");
+
+ initialized = true;
+ }
+
+ // Load the specified Ruby script
+ if (script != "")
+ {
+ // Convert any windows slashes \ in the root path to unix slashes /
+ // otherwise the ruby interpreter throws an error
+ string rootpath = getComposite()->getRoot();
+ int pos = 0;
+ while((pos = rootpath.find('\\', pos)) != string::npos)
+ {
+ rootpath = rootpath.replace(pos, 1, "/");
+ }
+
+ // Use rb_eval_string for now as it provides better error reporting
+ string path = "require(\"" + rootpath + "/" + script +"\")";
+ //rb_require((char *)path.c_str());
+ rb_eval_string(path.c_str());
+ }
+
+ // Load the Ruby implementation class
+ implementationClass = rb_path2class(className.c_str());
+
+ // Create a default service
+ ServiceType* defaultServiceType = new ServiceType(this, "", NULL, NULL);
+ addServiceType(defaultServiceType);
+
+ // Introspect the Ruby class and create references and properties for
+ // all public attributes
+ VALUE methods = rb_class_public_instance_methods(0, NULL, implementationClass);
+ int n = RARRAY(methods)->len;
+ for (int i = 0; i<n; i++)
+ {
+ VALUE method = rb_ary_entry(methods, i);
+ string methodName = string(rb_string_value_cstr(&method));
+
+ // Create a reference type for each setter method
+ int s = methodName.size();
+ if (s > 1 && methodName[s-1] == '=' && methodName[0] != '=')
+ {
+ string variableName = methodName.substr(0, s-1);
+ ReferenceType* referenceType = new ReferenceType(
+ this, variableName, NULL, NULL, ReferenceType::ONE_ONE);
+ addReferenceType(referenceType);
+
+ // Create a property type as well
+ addPropertyType(variableName, "http://www.w3.org/2001/XMLSchema#string", false, NULL);
+
+ }
+ }
+ }
+
+ void RubyImplementation::initializeComponent(Component* component)
+ {
+ ComponentType::initializeComponent(component);
+
+ // Create Ruby bindings for all the services
+ const Component::SERVICE_MAP& services = component->getServices();
+ Component::SERVICE_MAP::const_iterator iter = services.begin();
+ for (int i=0; i< services.size(); i++)
+ {
+ Service *service = iter->second;
+ RubyServiceBinding* binding = new RubyServiceBinding(service);
+ service->setBinding(binding);
+ iter++;
+ }
+
+ // Create Ruby bindings for all the references
+ const Component::REFERENCE_MAP& references = component->getReferences();
+ Component::REFERENCE_MAP::const_iterator refiter = references.begin();
+ for (int ri=0; ri< references.size(); ri++)
+ {
+ Reference *reference = refiter->second;
+ RubyReferenceBinding* binding = new RubyReferenceBinding(reference);
+ reference->setBinding(binding);
+ refiter++;
+ }
+ }
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.h
new file mode 100644
index 0000000000..32b5801f42
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.h
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_ruby_model_rubyimplementation_h
+#define tuscany_sca_ruby_model_rubyimplementation_h
+#include "tuscany/sca/model/ComponentType.h"
+
+#include <map>
+using std::map;
+#include <string>
+using std::string;
+
+#include "tuscany/sca/ruby/Ruby.h"
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+ /**
+ * Holds information about an SCA implementation written in Ruby
+ */
+ class RubyImplementation : public ComponentType
+ {
+
+ public:
+ /**
+ * Constructor.
+ * @param composite The composite containing this implementation.
+ * @param module Name of the Ruby module.
+ * @param className Name of the Ruby implementation class.
+ * @param script Path of the Ruby script.
+ */
+ RubyImplementation(Composite* composite, const string& module, const string& className, const string& script);
+
+ /**
+ * Destructor
+ */
+ virtual ~RubyImplementation();
+
+ /**
+ * Initialize a component of this type.
+ * @param component The component to initialize.
+ */
+ virtual void initializeComponent(Component* component);
+
+ /**
+ * Returns the name of the Ruby module.
+ * @return The name of the Ruby module.
+ */
+ const string& getModule() const { return module; }
+
+ /**
+ * Returns the name of Ruby class.
+ * @return Name of the Ruby class.
+ */
+ const string& getClass() const { return className; }
+
+ /**
+ * Returns the path of the Ruby script.
+ * @return The path of the Ruby script.
+ */
+ const string& getScript() const { return script; }
+
+ /**
+ * Returns the Ruby implementation class
+ */
+ VALUE getImplementationClass() const { return implementationClass; }
+
+ /**
+ * Returns the Ruby REXML::Document class
+ */
+ static VALUE getXMLDocumentClass() { return xmlDocumentClass; }
+
+ private:
+
+ /**
+ * Load the Ruby implementation class
+ */
+ void loadClass();
+
+ /**
+ * Name of the Ruby module.
+ */
+ string module;
+
+ /**
+ * Name of the Ruby class.
+ */
+ string className;
+
+ /**
+ * Path of the Ruby script.
+ */
+ string script;
+
+ /**
+ * The Ruby implementation class
+ */
+ VALUE implementationClass;
+
+ /**
+ * True if the Ruby runtime has been initialized
+ */
+ static bool initialized;
+
+ /**
+ * The Ruby REXML::Document class.
+ */
+ static VALUE xmlDocumentClass;
+
+ };
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_model_rubyimplementation_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.cpp
new file mode 100644
index 0000000000..0e813983f2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.cpp
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/ruby/model/RubyReferenceBinding.h"
+#include "tuscany/sca/ruby/RubyServiceProxy.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ // Constructor
+ RubyReferenceBinding::RubyReferenceBinding(Reference* reference)
+ : ReferenceBinding(reference, ""), serviceProxy(NULL), targetServiceBinding(NULL)
+ {
+ }
+
+ // Destructor
+ RubyReferenceBinding::~RubyReferenceBinding()
+ {
+ }
+
+ ServiceProxy* RubyReferenceBinding::getServiceProxy()
+ {
+ return serviceProxy;
+ }
+
+ void RubyReferenceBinding::configure(ServiceBinding* binding)
+ {
+ targetServiceBinding = binding;
+
+ serviceProxy = new RubyServiceProxy(getReference());
+ }
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.h
new file mode 100644
index 0000000000..cab1c22c48
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.h
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_ruby_model_rubyreferencebinding_h
+#define tuscany_sca_ruby_model_rubyreferencebinding_h
+
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+ /**
+ * Information about a Ruby service binding for service or a reference.
+ */
+ class RubyReferenceBinding : public ReferenceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ */
+ RubyReferenceBinding(Reference* reference);
+
+ /**
+ * Destructor.
+ */
+ virtual ~RubyReferenceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#RubyImplementationBinding"; };
+
+ /**
+ * Create a proxy representing the reference to the
+ * client component.
+ */
+ virtual ServiceProxy* getServiceProxy();
+
+ /**
+ * Configure this binding from a service binding.
+ */
+ virtual void configure(ServiceBinding* serviceBinding);
+
+ /**
+ * Returns the target service binding.
+ */
+ ServiceBinding* getTargetServiceBinding() const { return targetServiceBinding; };
+
+ private:
+
+ /**
+ * The proxy representing the reference to the client
+ * component.
+ */
+ ServiceProxy* serviceProxy;
+
+ /**
+ * The service binding of the target
+ */
+ ServiceBinding* targetServiceBinding;
+ };
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_model_rubyreferencebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.cpp
new file mode 100644
index 0000000000..376a4db0f7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.cpp
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/ruby/model/RubyServiceBinding.h"
+#include "tuscany/sca/ruby/RubyServiceWrapper.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+
+ // Constructor
+ RubyServiceBinding::RubyServiceBinding(Service* service)
+ : ServiceBinding(service, "")
+ {
+ serviceWrapper = new RubyServiceWrapper(service);
+ }
+
+ // Destructor
+ RubyServiceBinding::~RubyServiceBinding()
+ {
+ }
+
+ ServiceWrapper* RubyServiceBinding::getServiceWrapper()
+ {
+ return (ServiceWrapper*)serviceWrapper;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.h
new file mode 100644
index 0000000000..24c0275bb9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.h
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_ruby_model_rubyservicebinding_h
+#define tuscany_sca_ruby_model_rubyservicebinding_h
+
+#include "tuscany/sca/model/ServiceBinding.h"
+using namespace tuscany::sca::model;
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ruby
+ {
+ /**
+ * Information about a Ruby service binding for service or a reference.
+ */
+ class RubyServiceBinding : public ServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ */
+ RubyServiceBinding(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~RubyServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#RubyImplementationBinding"; };
+
+ /**
+ * Create a wrapper for the service configured by this
+ * binding.
+ */
+ virtual ServiceWrapper* getServiceWrapper();
+
+ private:
+
+ /**
+ * The wrapper for the service configured by this binding.
+ */
+ ServiceWrapper* serviceWrapper;
+
+ };
+
+ } // End namespace ruby
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ruby_model_rubyservicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/xsd/sca-implementation-ruby.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/xsd/sca-implementation-ruby.xsd
new file mode 100644
index 0000000000..f6598590d1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ruby/xsd/sca-implementation-ruby.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="implementation.ruby" type="sca:RubyImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="RubyImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="module" type="NCName" use="optional"/>
+ <attribute name="class" type="Name" use="optional"/>
+ <anyAttribute namespace="##any" processContents="lax"/>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/Makefile.am
new file mode 100644
index 0000000000..50dfb45557
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = reference service
+datadir=$(prefix)/extensions/sca
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/Makefile.am
new file mode 100644
index 0000000000..18e9ba89b9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = axis2c
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/Makefile.am
new file mode 100644
index 0000000000..2b9491ec1c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am
new file mode 100644
index 0000000000..75eba52f73
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/sca/reference/lib
+lib_LTLIBRARIES = libtuscany_sca_binding_reference.la
+
+noinst_HEADERS = \
+tuscany/sca/binding/*.h \
+tuscany/sca/binding/model/*.h
+
+libtuscany_sca_binding_reference_la_SOURCES = \
+tuscany/sca/binding/SCAServiceBindingExtension.cpp \
+tuscany/sca/binding/model/SCAServiceBinding.cpp
+
+libtuscany_sca_binding_reference_la_LIBADD = \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L$(top_builddir)/runtime/extensions/ws/reference/axis2c/src -ltuscany_sca_ws_reference
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I$(top_builddir)/runtime/extensions/ws/reference/axis2c/src
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp
new file mode 100644
index 0000000000..b12702bf43
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "SCAServiceBindingExtension.h"
+#include "model/SCAServiceBinding.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::binding::SCAServiceBindingExtension::initialize();
+ }
+}
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ // ===================================================================
+ // Constructor for the SCAServiceBinding class.
+ // ===================================================================
+ SCAServiceBindingExtension::SCAServiceBindingExtension()
+ {
+ LOGENTRY(1, "SCAServiceBindingExtension::constructor");
+ LOGEXIT(1, "SCAServiceBindingExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the SCAServiceBindingExtension class.
+ // ===================================================================
+ SCAServiceBindingExtension::~SCAServiceBindingExtension()
+ {
+ LOGENTRY(1, "SCAServiceBindingExtension::destructor");;
+ LOGEXIT(1, "SCAServiceBindingExtension::destructor");
+ }
+
+ const string SCAServiceBindingExtension::extensionName("sca");
+ const string SCAServiceBindingExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#SCABinding");
+
+
+ // ===================================================================
+ // loadModelElement - load the info from binding.ws
+ // ===================================================================
+ ServiceBinding* SCAServiceBindingExtension::getServiceBinding(Composite *composite, Service* service, DataObjectPtr scdlBinding)
+ {
+ string bindingType = scdlBinding->getType().getName();
+ if (bindingType == "SCABinding")
+ {
+ string uri = scdlBinding->getCString("uri");
+
+ SCAServiceBinding* serviceBinding = new SCAServiceBinding(service, uri);
+
+ return serviceBinding;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ void SCAServiceBindingExtension::initialize()
+ {
+ LOGENTRY(1, "SCAServiceBindingExtension::initialize");;
+ SCARuntime::getInstance()->registerServiceBindingExtension(new SCAServiceBindingExtension());
+ LOGEXIT(1, "SCAServiceBindingExtension::initialize");;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.h
new file mode 100644
index 0000000000..4cd05bee16
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.h
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_scaservicebindingextension_h
+#define tuscany_sca_extension_binding_scaservicebindingextension_h
+
+#include "tuscany/sca/extension/ServiceBindingExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ class SCAServiceBindingExtension : public ServiceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ SCAServiceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~SCAServiceBindingExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ServiceBinding* getServiceBinding(Composite* composite, Service* service, DataObjectPtr scdlBinding);
+
+ static void initialize();
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif //tuscany_sca_extension_binding_scaservicebindingextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.cpp
new file mode 100644
index 0000000000..a6b052f04f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.cpp
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/binding/model/SCAServiceBinding.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ // Constructor
+ SCAServiceBinding::SCAServiceBinding(Service* service, const string& uri)
+ : WSServiceBinding(service, uri, "", "")
+ {
+ }
+
+ // Destructor
+ SCAServiceBinding::~SCAServiceBinding()
+ {
+ }
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.h
new file mode 100644
index 0000000000..90eb222b7b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_model_scaservicebinding_h
+#define tuscany_sca_extension_binding_model_scaservicebinding_h
+
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/ws/model/WSServiceBinding.h"
+
+#include <string>
+using std::string;
+
+using namespace tuscany::sca::model;
+using namespace tuscany::sca::ws;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ /**
+ * Information about an SCA service binding for service or a reference.
+ */
+ class SCAServiceBinding : public WSServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ */
+ SCAServiceBinding(model::Service* service, const string& uri);
+
+ /**
+ * Destructor.
+ */
+ virtual ~SCAServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#SCABinding"; };
+
+ private:
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_model_wsservicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/Makefile.am
new file mode 100644
index 0000000000..18e9ba89b9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = axis2c
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/Makefile.am
new file mode 100644
index 0000000000..feadf9e317
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am
new file mode 100644
index 0000000000..b03e398106
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/sca/service/lib
+lib_LTLIBRARIES = libtuscany_sca_binding_service.la
+
+noinst_HEADERS = \
+tuscany/sca/binding/*.h \
+tuscany/sca/binding/model/*.h
+
+libtuscany_sca_binding_service_la_SOURCES = \
+tuscany/sca/binding/SCAReferenceBindingExtension.cpp \
+tuscany/sca/binding/model/SCAReferenceBinding.cpp
+
+libtuscany_sca_binding_service_la_LIBADD = \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L$(top_builddir)/runtime/extensions/ws/service/axis2c/src -ltuscany_sca_ws_service
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I$(top_builddir)/runtime/extensions/ws/service/axis2c/src
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp
new file mode 100644
index 0000000000..7fb9b4af64
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "SCAReferenceBindingExtension.h"
+#include "model/SCAReferenceBinding.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::binding::SCAReferenceBindingExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ // ===================================================================
+ // Constructor for the SCAReferenceBinding class.
+ // ===================================================================
+ SCAReferenceBindingExtension::SCAReferenceBindingExtension()
+ {
+ LOGENTRY(1, "SCAReferenceBindingExtension::constructor");
+ LOGEXIT(1, "SCAReferenceBindingExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the SCAReferenceBindingExtension class.
+ // ===================================================================
+ SCAReferenceBindingExtension::~SCAReferenceBindingExtension()
+ {
+ LOGENTRY(1, "SCAReferenceBindingExtension::destructor");;
+ LOGEXIT(1, "SCAReferenceBindingExtension::destructor");
+ }
+
+ const string SCAReferenceBindingExtension::extensionName("sca");
+ const string SCAReferenceBindingExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#SCABinding");
+
+ // ===================================================================
+ // loadModelElement - load the info from binding.ws
+ // ===================================================================
+ ReferenceBinding* SCAReferenceBindingExtension::getReferenceBinding(Composite *composite, Reference* reference, DataObjectPtr scdlBinding)
+ {
+ string bindingType = scdlBinding->getType().getName();
+ if (bindingType == "SCABinding")
+ {
+ string uri = scdlBinding->getCString("uri");
+
+ SCAReferenceBinding* serviceBinding = new SCAReferenceBinding(reference, uri);
+
+ return serviceBinding;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ void SCAReferenceBindingExtension::initialize()
+ {
+ LOGENTRY(1, "SCAReferenceBindingExtension::initialize");;
+ SCARuntime::getInstance()->registerReferenceBindingExtension(new SCAReferenceBindingExtension());
+ LOGEXIT(1, "SCAReferenceBindingExtension::initialize");;
+ }
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.h
new file mode 100644
index 0000000000..9f5ddd55eb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.h
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_scareferencebindingextension_h
+#define tuscany_sca_extension_binding_scareferencebindingextension_h
+
+#include "tuscany/sca/extension/ReferenceBindingExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ class SCAReferenceBindingExtension : public ReferenceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ SCAReferenceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~SCAReferenceBindingExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ReferenceBinding* getReferenceBinding(Composite* composite, Reference *reference, DataObjectPtr scdlBinding);
+
+ static void initialize();
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_binding_scareferencebindingextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp
new file mode 100644
index 0000000000..6e7b4eaccc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/binding/model/SCAReferenceBinding.h"
+#include "tuscany/sca/ws/model/WSReferenceBinding.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ // Constructor
+ SCAReferenceBinding::SCAReferenceBinding(Reference* reference, const string& uri)
+ : WSReferenceBinding(reference, uri, "", "")
+ {
+ }
+
+ // Destructor
+ SCAReferenceBinding::~SCAReferenceBinding()
+ {
+ }
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.h
new file mode 100644
index 0000000000..445a00be82
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.h
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_model_scareferencebinding_h
+#define tuscany_sca_extension_binding_model_scareferencebinding_h
+
+#include "tuscany/sca/model/ReferenceBinding.h"
+#include "tuscany/sca/ws/model/WSReferenceBinding.h"
+
+using namespace tuscany::sca::model;
+using namespace tuscany::sca::ws;
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ /**
+ * Information about a web service binding for service or a reference.
+ */
+ class SCAReferenceBinding : public WSReferenceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ */
+ SCAReferenceBinding(Reference* reference, const string&uri);
+
+ /**
+ * Destructor.
+ */
+ virtual ~SCAReferenceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#SCABinding"; };
+
+ private:
+
+ };
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_binding_model_scareferencebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/xsd/sca-binding-sca.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/xsd/sca-binding-sca.xsd
new file mode 100644
index 0000000000..1051c3910c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/sca/xsd/sca-binding-sca.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="binding.sca" type="sca:SCABinding" substitutionGroup="sca:binding"/>
+ <complexType name="SCABinding">
+ <complexContent>
+ <extension base="sca:Binding">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/Makefile.am
new file mode 100644
index 0000000000..806786ce04
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = reference service
+datadir=$(prefix)/extensions/ws
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/deploy.bat
new file mode 100644
index 0000000000..567875624f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/deploy.bat
@@ -0,0 +1,45 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set wsextdir=%extdir%\ws
+set srcdir=%rootdir%\runtime\extensions\ws
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %wsextdir% mkdir %wsextdir%
+if not exist %wsextdir%\xsd mkdir %wsextdir%\xsd
+
+copy %srcdir%\xsd\*.* %wsextdir%\xsd
+
+goto end
+:usage
+echo Usage: deploy <sca-root>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/Makefile.am
new file mode 100644
index 0000000000..18e9ba89b9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = axis2c
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/Makefile.am
new file mode 100644
index 0000000000..2b9491ec1c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am
new file mode 100644
index 0000000000..208af0e15a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am
@@ -0,0 +1,49 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/ws/reference/lib
+lib_LTLIBRARIES = libtuscany_sca_ws_reference.la
+
+noinst_HEADERS = tuscany/sca/ws/*.h tuscany/sca/ws/model/*.h
+
+libtuscany_sca_ws_reference_la_SOURCES = \
+tuscany/sca/ws/WSServiceBindingExtension.cpp \
+tuscany/sca/ws/model/WSServiceBinding.cpp \
+tuscany/sca/ws/WSServiceWrapper.cpp \
+tuscany/sca/ws/Axis2Client.cpp
+
+libtuscany_sca_ws_reference_la_LIBADD = \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -lwoden \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I${AXIS2C_HOME}/include
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp
new file mode 100644
index 0000000000..4dfb3e7efd
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp
@@ -0,0 +1,717 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4091)
+#pragma warning(disable: 4786)
+#endif
+
+#include <axis2_client.h>
+
+#include <axis2_error_default.h>
+#include <axis2_log_default.h>
+#include <axis2_defines.h>
+#include <axiom_soap_const.h>
+#include <platforms/axis2_platform_auto_sense.h>
+
+#include <sdo_axiom.h>
+#include "Axis2Client.h"
+
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "model/WSServiceBinding.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/WSDLDefinition.h"
+#include "tuscany/sca/model/WSDLInterface.h"
+#include "tuscany/sca/model/WSDLOperation.h"
+
+#include <sstream>
+
+using namespace tuscany::sca::ws;
+
+
+using namespace commonj::sdo;
+using namespace commonj::sdo_axiom;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ Axis2Client::Axis2Client(CompositeReference* compositeReference)
+ : compositeReference(compositeReference)
+ {
+ }
+
+ Axis2Client::~Axis2Client()
+ {
+ }
+
+ void Axis2Client::invoke(tuscany::sca::Operation& operation)
+ {
+ LOGENTRY(1, "Axis2Client::invoke");
+
+ // Initialize Axis2 stuff
+ axis2_allocator_t *allocator = axis2_allocator_init (NULL);
+ axis2_log_t *log = axis2_log_create(allocator, NULL, "tuscany_client.log");
+ axis2_error_t *error = axis2_error_create(allocator);
+ axis2_env_t *env = axis2_env_create_with_error_log(allocator, error, log);
+ env->log->level = AXIS2_LOG_LEVEL_TRACE;
+ axis2_error_init();
+
+ // Get the WS service binding and WSDLOperation
+ Composite* composite=compositeReference->getComposite();
+ Service* service = compositeReference->getService();
+ WSServiceBinding* binding = (WSServiceBinding *)service->getBinding();
+ const string& operationName = operation.getName();
+ WSDLOperation wsdlOperation;
+
+ // Get the WSDL namespace
+ string wsdlNamespace = binding->getWSDLNamespaceURL();
+ if (wsdlNamespace != "")
+ {
+
+ // Lookup the wsdl model from the composite, keyed on the namespace
+ // (the wsdl will have been loaded at startup)
+ WSDLDefinition* wsdlDefinition = composite->findWSDLDefinition(wsdlNamespace);
+ if (wsdlDefinition == 0)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "WSDL description %s not found\n", wsdlNamespace.c_str());
+ string msg = "WSDL not found for " + wsdlNamespace;
+ throw SystemConfigurationException(msg.c_str());
+ }
+
+ // Match the operation in Operation to the operation in the wsdl port type.
+ try
+ {
+ wsdlOperation = wsdlDefinition->findOperation(
+ binding->getServiceName(),
+ binding->getEndpointName(),
+ operationName);
+ }
+ catch(SystemConfigurationException &ex)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "SystemConfigurationException has been caught: %s\n", ex.getMessageText());
+ throw;
+ }
+
+ }
+ else
+ {
+ Interface* iface = service->getType()->getInterface();
+ if (iface != NULL &&
+ iface->getInterfaceTypeQName() == WSDLInterface::typeQName)
+ {
+ WSDLInterface* wsdlInterface = (WSDLInterface*)iface;
+ wsdlNamespace = wsdlInterface->getNamespaceURI();
+
+ if (wsdlNamespace != "")
+ {
+
+ WSDLDefinition* wsdl = composite->findWSDLDefinition(wsdlNamespace);
+ if (wsdl == 0)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "WSDL description %s not found\n", wsdlNamespace.c_str());
+ string msg = "WSDL not found for " + wsdlNamespace;
+ throw SystemConfigurationException(msg.c_str());
+ }
+
+ try
+ {
+ wsdlOperation = wsdl->findOperation(wsdlInterface->getName(), operationName);
+ }
+ catch(SystemConfigurationException &ex)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "SystemConfigurationException has been caught: %s\n", ex.getMessageText());
+ throw;
+ }
+ }
+ }
+ }
+
+ if (wsdlNamespace == "")
+ {
+
+ // Create a default document literal wrapped WSDL operation
+ wsdlNamespace = compositeReference->getName();
+ wsdlOperation = WSDLOperation();
+ wsdlOperation.setOperationName(operationName);
+ wsdlOperation.setSoapAction(wsdlNamespace+ "#" +operationName);
+ wsdlOperation.setEndpoint("");
+ wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
+ wsdlOperation.setDocumentStyle(true);
+ wsdlOperation.setWrappedStyle(true);
+ wsdlOperation.setEncoded(false);
+ wsdlOperation.setInputType(wsdlNamespace + "#" + operationName);
+ wsdlOperation.setOutputType(wsdlNamespace + "#" + operationName + "Response");
+ }
+
+ // Get the target endpoint address
+ // The URI specified in the binding overrides the address specified in
+ // the WSDL
+ axis2_char_t* address;
+ if (binding->getURI() != "")
+ {
+ address = (axis2_char_t*)binding->getURI().c_str();
+ }
+ else
+ {
+ address = (axis2_char_t*)wsdlOperation.getEndpoint().c_str();
+ }
+
+ axis2_char_t* opName = (axis2_char_t*)operationName.c_str();
+ axis2_char_t* soap_action = (axis2_char_t*)wsdlOperation.getSoapAction().c_str();
+ axis2_char_t* serviceName = (axis2_char_t*)binding->getServiceName().c_str();
+
+ // create OM from Operation and wsdlOperation
+ axiom_node_t* payload = createPayload(operation, wsdlOperation, env);
+
+ /* Create EPR with given address */
+ axis2_endpoint_ref_t* endpoint_ref = axis2_endpoint_ref_create(env, address);
+
+ /* Setup options */
+ axis2_options_t* options = axis2_options_create(env);
+ AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref);
+ int soap_version = AXIOM_SOAP11;
+ if (binding->getSOAPVersion() == "1.2")
+ {
+ soap_version = AXIOM_SOAP12;
+ }
+ else
+ {
+ if (wsdlOperation.getSoapVersion() == WSDLOperation::SOAP12)
+ {
+ soap_version = AXIOM_SOAP12;
+ }
+ }
+
+ AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, soap_version);
+ AXIS2_OPTIONS_SET_ACTION(options, env, soap_action);
+
+ /* Create service client */
+
+ axis2_char_t* client_home = AXIS2_GETENV("AXIS2C_HOME");
+ if (!client_home)
+ {
+ throw SystemConfigurationException("Environment error: AXIS2C_HOME not set");
+ }
+ axis2_svc_client_t* svc_client = axis2_svc_client_create(env, client_home);
+ if (!svc_client)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+
+ throw SystemConfigurationException("Axis2Client: axis2_svc_client_create failed");
+ }
+
+ /* Set service client options */
+ AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options);
+
+ /* Send request */
+ axiom_node_t* ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, payload);
+ if(ret_node)
+ {
+ setReturn(ret_node, operation, wsdlOperation, env);
+ }
+ else
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Invoke failed: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ throw SystemConfigurationException("Axis2Client: Invoke failed");
+ }
+
+ LOGINFO(2, "Warning: Have not freed Axis2C service client memory due to Jira AXIS2C-209");
+ // Uncommenting this code causes crash when invoking a composite with both Axis2C ws.binding
+ // service and reference. See Jiras TUSCANY-536 and AXIS2C-209
+ //if (svc_client)
+ //{
+ // AXIS2_SVC_CLIENT_FREE(svc_client, env);
+ // svc_client = NULL;
+ //}
+
+ LOGEXIT(1, "Axis2Client::invoke");
+ }
+
+ axiom_node_t* Axis2Client::createPayload(Operation& operation,
+ const WSDLOperation& wsdlOperation,
+ axis2_env_t* env)
+ {
+ LOGENTRY(1, "Axis2Client::createPayload");
+ axiom_node_t* request_node = NULL;
+
+ // map the operation request to the wsdl
+ if (wsdlOperation.isDocumentStyle())
+ {
+ // Document style
+ // only support single part messages - WS-I compliant
+
+ // Build up the payload as an SDO
+
+ // Get the data factory for the composite (it will already have the typecreates loaded for the xsds)
+ DataFactoryPtr dataFactory = compositeReference->getComposite()->getDataFactory();
+
+ DataObjectPtr inputDataObject;
+ try
+ {
+
+ // 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& inputType = prop.getType();
+ inputDataObject = dataFactory->create(inputType);
+ }
+ catch (SDORuntimeException e)
+ {
+ try
+ {
+ // Create the input wrapper
+ const Type& inputType = dataFactory->getType(wsdlOperation.getInputTypeUri().c_str(),
+ wsdlOperation.getInputTypeName().c_str());
+ inputDataObject = dataFactory->create(inputType);
+ }
+ catch (SDORuntimeException e2)
+ {
+
+ // The input wrapper type is not known, create an open DataObject
+ inputDataObject = dataFactory->create(Type::SDOTypeNamespaceURI, "OpenDataObject");
+ }
+ }
+
+ // Go through data object to set the input parameters
+ PropertyList pl = inputDataObject->getType().getProperties();
+
+ if(pl.size() == 0)
+ {
+ if(inputDataObject->getType().isOpenType() && inputDataObject->getType().isDataObjectType())
+ {
+ /*
+ * This code deals with sending xsd:any elements
+ */
+ for (int i=0; i<operation.getNParms(); i++)
+ {
+ ostringstream pname;
+ pname << "param" << (i+1);
+ DataObjectList& l = inputDataObject->getList(pname.str());
+
+ const Operation::Parameter& parm = operation.getParameter(i);
+ switch(parm.getType())
+ {
+ case Operation::BOOL:
+ {
+ l.append(*(bool*)parm.getValue());
+ break;
+ }
+ case Operation::SHORT:
+ {
+ l.append(*(short*)parm.getValue());
+ break;
+ }
+ case Operation::INT:
+ {
+ l.append(*(long*)parm.getValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ l.append(*(long*)parm.getValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ l.append(*(short*)parm.getValue());
+ break;
+ }
+ case Operation::UINT:
+ {
+ l.append(*(long*)parm.getValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ l.append(*(long*)parm.getValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ l.append(*(float*)parm.getValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ l.append(*(long double*)parm.getValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ l.append(*(long double*)parm.getValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ l.append(*(char**)parm.getValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ l.append((*(string*)parm.getValue()).c_str());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+ l.append(*(DataObjectPtr*)parm.getValue());
+ break;
+ }
+ default: throw "unsupported parameter type";
+ }
+ }
+ }
+ }
+ else {
+
+ // Each parameter in the operation should be a property on the request dataobject
+ for (int i=0; i<operation.getNParms(); i++)
+ {
+ const Operation::Parameter& parm = operation.getParameter(i);
+ switch(parm.getType())
+ {
+ case Operation::BOOL:
+ {
+ inputDataObject->setBoolean(i, *(bool*)parm.getValue());
+ break;
+ }
+ case Operation::SHORT:
+ {
+ inputDataObject->setShort(i, *(short*)parm.getValue());
+ break;
+ }
+ case Operation::INT:
+ {
+ inputDataObject->setInteger(i, *(int*)parm.getValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ inputDataObject->setLong(i, *(long*)parm.getValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ inputDataObject->setInteger(i, *(unsigned short*)parm.getValue());
+ break;
+ }
+ case Operation::UINT:
+ {
+ inputDataObject->setInteger(i, *(unsigned int*)parm.getValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ inputDataObject->setInteger(i, *(unsigned long*)parm.getValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ inputDataObject->setFloat(i, *(float*)parm.getValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ inputDataObject->setDouble(i, *(double*)parm.getValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ inputDataObject->setDouble(i, *(long double*)parm.getValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ inputDataObject->setCString(i, *(char**)parm.getValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ inputDataObject->setCString(i, (*(string*)parm.getValue()).c_str());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+ inputDataObject->setDataObject(i, *(DataObjectPtr*)parm.getValue());
+ break;
+ }
+ default: throw "unsupported parameter type";
+ }
+ }
+ }
+
+ // 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());
+ AxiomHelper::releaseHelper(axiomHelper);
+ }
+ else
+ {
+ // RPC
+ }
+
+ char* str = AXIOM_NODE_TO_STRING(request_node, env);
+ LOGINFO_1(3, "Sending this OM node in XML : %s \n", str);
+
+ LOGEXIT(1, "Axis2Client::createPayload");
+ return request_node;
+ }
+
+ void Axis2Client::setReturn(axiom_node_t* ret_node,
+ Operation& operation,
+ const WSDLOperation& wsdlOperation,
+ axis2_env_t* env)
+ {
+ LOGENTRY(1, "Axis2Client::setReturn");
+
+ if (wsdlOperation.isDocumentStyle())
+ {
+ // Document style
+ DataFactoryPtr dataFactory = compositeReference->getComposite()->getDataFactory();
+
+ // Get the AXIOM node representing the SOAP Body
+ axiom_node_t* body = AXIOM_NODE_GET_PARENT(ret_node, env);
+
+ // Convert the AXIOM node to an SDO DataObject
+ char* str = NULL;
+ str = AXIOM_NODE_TO_STRING(body, env);
+ if (str)
+ {
+ AXIS2_LOG_INFO((env)->log, "Axis2Client invoke has response OM: %s\n", str);
+ }
+
+ // Convert the SOAP body to an SDO DataObject
+ AxiomHelper* axiomHelper = AxiomHelper::getHelper();
+ DataObjectPtr outputBodyDataObject = axiomHelper->toSdo(body, dataFactory);
+ AxiomHelper::releaseHelper(axiomHelper);
+
+ if(!outputBodyDataObject)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Service invoke: Could not convert received Axiom node to SDO");
+ /** TODO: return a SOAP fault here */
+ return;
+ }
+
+ // Get the first body part representing the doc-lit-wrapped wrapper element
+ DataObjectPtr outputDataObject = NULL;
+ PropertyList bpl = outputBodyDataObject->getInstanceProperties();
+ if (bpl.size()!=0)
+ {
+ if (bpl[0].isMany())
+ {
+ DataObjectList& parts = outputBodyDataObject->getList((unsigned int)0);
+ outputDataObject = parts[0];
+ }
+ else
+ {
+ outputDataObject = outputBodyDataObject->getDataObject(bpl[0]);
+ }
+ }
+ if (outputDataObject == NULL)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Client invoke: Could not convert body part to SDO");
+ return;
+ }
+
+ PropertyList pl = outputDataObject->getInstanceProperties();
+ unsigned int i = 0;
+
+ switch(pl[i].getTypeEnum())
+ {
+ case Type::BooleanType:
+ {
+ bool* boolData = new bool;
+ *boolData = outputDataObject->getBoolean(pl[i]);
+ operation.setReturnValue(boolData);
+ }
+ break;
+ case Type::ByteType:
+ {
+ char* byteData = new char;
+ *byteData = outputDataObject->getByte(pl[i]);
+ operation.setReturnValue(byteData);
+ }
+ break;
+ case Type::BytesType:
+ {
+ int len = outputDataObject->getLength(pl[i]);
+ char* bytesData = new char[len+1];
+ int bytesWritten = outputDataObject->getBytes(pl[i], bytesData, len);
+ // Ensure the bytes end with the null char. Not sure if this is neccessary
+ if(bytesWritten <= len)
+ {
+ bytesData[bytesWritten] = 0;
+ }
+ else
+ {
+ bytesData[len] = 0;
+ }
+ //printf("outputDataObject has BytesType named %s with length %d\n", name, bytesWritten);
+ operation.setReturnValue(&bytesData);
+ }
+ break;
+ case Type::CharacterType:
+ {
+ // This code should work but won't be used as there is no mapping from an XSD type to the SDO CharacterType
+ wchar_t* charData = new wchar_t;
+ *charData = outputDataObject->getCharacter(pl[i]);
+ operation.setReturnValue(charData);
+ }
+ break;
+ case Type::DoubleType:
+ {
+ long double* doubleData = new long double;
+ *doubleData = outputDataObject->getDouble(pl[i]);
+ operation.setReturnValue(doubleData);
+ }
+ break;
+ case Type::FloatType:
+ {
+ float* floatData = new float;
+ *floatData = outputDataObject->getFloat(pl[i]);
+ operation.setReturnValue(floatData);
+ }
+ break;
+ case Type::IntegerType:
+ {
+ long* intData = new long;
+ *intData = outputDataObject->getInteger(pl[i]);
+ operation.setReturnValue(intData);
+ }
+ break;
+ case Type::ShortType:
+ {
+ short* shortData = new short;
+ *shortData = outputDataObject->getShort(pl[i]);
+ operation.setReturnValue(shortData);
+ }
+ break;
+ case Type::StringType:
+ {
+ string* str = new string(outputDataObject->getCString(pl[i]));
+ operation.setReturnValue(str);
+ }
+ break;
+ case Type::DataObjectType:
+ {
+ DataObjectPtr dataObjectData = outputDataObject->getDataObject(pl[i]);
+ if(!dataObjectData)
+ {
+ LOGINFO(4, "SDO DataObject return value was null");
+ }
+ operation.setReturnValue(&dataObjectData);
+ }
+ break;
+ case Type::OpenDataObjectType:
+ {
+ /*
+ * This code deals with xsd:any element parameters
+ */
+
+ DataObjectList& dataObjectList = outputDataObject->getList(pl[i]);
+
+ for(int j=0; j<dataObjectList.size(); j++)
+ {
+ DataObjectPtr dataObjectData = dataObjectList[j];
+ if(!dataObjectData)
+ {
+ operation.setReturnValue(&dataObjectData);
+ LOGINFO(4, "SDO OpenDataObject return value was null");
+ }
+ else
+ {
+
+ SequencePtr sequence = dataObjectData->getSequence();
+ if (sequence->size()!=0)
+ {
+ // Return a text element
+ if (sequence->isText(0))
+ {
+ string* stringData = new string(sequence->getCStringValue(0));
+ operation.setReturnValue(stringData);
+ }
+ else
+ {
+ // Return a DataObject representing a complex element
+ DataObjectPtr dob = sequence->getDataObjectValue(0);
+ if(!dob)
+ {
+ LOGINFO(4, "SDO DataObject return value was null");
+ }
+ operation.setReturnValue(&dob);
+ }
+ }
+ else
+ {
+ // Empty content, add an empty string
+ LOGINFO(4, "SDO OpenDataObject return value was empy");
+ string *stringData = new string("");
+ operation.setReturnValue(stringData);
+ }
+ }
+ }
+ }
+ break;
+ case Type::DateType:
+ LOGERROR(0, "SDO DateType return values are not yet supported");
+ break;
+ case Type::LongType:
+ LOGERROR(0, "SDO LongType (int64_t) return values are not yet supported");
+ break;
+ case Type::UriType:
+ LOGERROR(0, "SDO UriType return values are not yet supported");
+ break;
+ case Type::BigDecimalType:
+ LOGERROR(0, "SDO BigDecimalType return values are not yet supported");
+ break;
+ case Type::BigIntegerType:
+ LOGERROR(0, "SDO BigIntegerType return values are not yet supported");
+ break;
+ default:
+ LOGERROR(0, "Unknown SDO type has been found in return value. Unknown types are not yet supported");
+ break;
+ }
+ }
+ else
+ {
+ // RPC
+ }
+ LOGEXIT(1, "Axis2Client::setReturn");
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.h
new file mode 100644
index 0000000000..5ec302f0c8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.h
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_extension_ws_axis2client_h
+#define tuscany_sca_extension_ws_axis2client_h
+
+#include <axiom.h>
+
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/CompositeReference.h"
+#include "tuscany/sca/model/WSDLOperation.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ class Axis2Client
+ {
+ public:
+ Axis2Client(CompositeReference* externalService);
+ virtual ~Axis2Client();
+
+ virtual void invoke(Operation& operation);
+
+ private:
+ CompositeReference* compositeReference;
+
+ axiom_node_t* createPayload(Operation& operation,
+ const WSDLOperation& wsdlOp,
+ axis2_env_t* env);
+
+ void setReturn(axiom_node_t* returnNode,
+ Operation& operation,
+ const WSDLOperation& wsdlOp,
+ axis2_env_t* env);
+
+ };
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_axis2client_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.cpp
new file mode 100644
index 0000000000..c260445b60
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.cpp
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "WSServiceBindingExtension.h"
+#include "model/WSServiceBinding.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::ws::WSServiceBindingExtension::initialize();
+ }
+}
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+ // ===================================================================
+ // Constructor for the WSServiceBinding class.
+ // ===================================================================
+ WSServiceBindingExtension::WSServiceBindingExtension()
+ {
+ LOGENTRY(1, "WSServiceBindingExtension::constructor");
+ LOGEXIT(1, "WSServiceBindingExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the WSServiceBindingExtension class.
+ // ===================================================================
+ WSServiceBindingExtension::~WSServiceBindingExtension()
+ {
+ LOGENTRY(1, "WSServiceBindingExtension::destructor");;
+ LOGEXIT(1, "WSServiceBindingExtension::destructor");
+ }
+
+ const string WSServiceBindingExtension::extensionName("ws");
+ const string WSServiceBindingExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#WebServiceBinding");
+
+
+ // ===================================================================
+ // loadModelElement - load the info from binding.ws
+ // ===================================================================
+ ServiceBinding* WSServiceBindingExtension::getServiceBinding(Composite *composite, Service* service, DataObjectPtr scdlBinding)
+ {
+ string bindingType = scdlBinding->getType().getName();
+ if (bindingType == "WebServiceBinding")
+ {
+ string uri = scdlBinding->getCString("uri");
+ string endpoint = scdlBinding->getCString("endpoint");
+ commonj::sdo::DataObjectList& soap = scdlBinding->getList("soapbinding");
+ string version;
+ if (soap.size()!=0)
+ {
+ version = soap.getCString(0);
+ }
+ else
+ {
+ version = "";
+ }
+
+ WSServiceBinding* serviceBinding = new WSServiceBinding(service, uri, endpoint, version);
+
+ return serviceBinding;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ void WSServiceBindingExtension::initialize()
+ {
+ LOGENTRY(1, "WSServiceBindingExtension::initialize");;
+ SCARuntime::getInstance()->registerServiceBindingExtension(new WSServiceBindingExtension());
+ LOGEXIT(1, "WSServiceBindingExtension::initialize");;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.h
new file mode 100644
index 0000000000..db2c0c791f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.h
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef tuscany_sca_extension_ws_wsservicebindingextension_h
+#define tuscany_sca_extension_ws_wsservicebindingextension_h
+
+#include "tuscany/sca/extension/ServiceBindingExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ class WSServiceBindingExtension : public ServiceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ WSServiceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~WSServiceBindingExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ServiceBinding* getServiceBinding(Composite* composite, Service* service, DataObjectPtr scdlBinding);
+
+ static void initialize();
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif //tuscany_sca_extension_ws_wsservicebindingextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.cpp
new file mode 100644
index 0000000000..5839aa8722
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.cpp
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4091)
+#endif
+
+#include "tuscany/sca/util/Logging.h"
+#include "Axis2Client.h"
+#include "WSServiceWrapper.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceType.h"
+
+#include "commonj/sdo/SDO.h"
+using namespace commonj::sdo;
+
+using namespace tuscany::sca;
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ WSServiceWrapper::WSServiceWrapper(Service* service) : ServiceWrapper(service)
+ {
+ // Define the SOAP Body type and element to allow a SOAP body to
+ // be loaded in a DataObject
+ DataFactoryPtr dataFactory = service->getComponent()->getComposite()->getDataFactory();
+ try {
+ const Type& bodyType = dataFactory->getType("http://www.w3.org/2003/05/soap-envelope", "Body");
+ } catch (SDORuntimeException e)
+ {
+ dataFactory->addType("http://www.w3.org/2003/05/soap-envelope", "RootType", false, false, false);
+ dataFactory->addType("http://www.w3.org/2003/05/soap-envelope", "Body", false, true, false);
+ dataFactory->addPropertyToType(
+ "http://www.w3.org/2003/05/soap-envelope", "RootType",
+ "Body",
+ "http://www.w3.org/2003/05/soap-envelope", "Body",
+ false, false, true);
+
+ dataFactory->addType("http://schemas.xmlsoap.org/soap/envelope/", "RootType", false, false, false);
+ dataFactory->addType("http://schemas.xmlsoap.org/soap/envelope/", "Body", false, true, false);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/soap/envelope/", "RootType",
+ "Body",
+ "http://schemas.xmlsoap.org/soap/envelope/", "Body",
+ false, false, true);
+ }
+ }
+
+ WSServiceWrapper::~WSServiceWrapper()
+ {
+ }
+
+ ///
+ /// This method will be called when a web service call needs to be made.
+ ///
+ void WSServiceWrapper::invoke(Operation& operation)
+ {
+ LOGENTRY(1, "WSServiceWrapper::invoke");
+
+ const string& operationName = operation.getName();
+
+ LOGINFO_2(2,"Service: %s, Operation: %s", getService()->getType()->getName().c_str() , operationName.c_str());
+
+ for (unsigned int i=0; i<operation.getNParms(); i++)
+ {
+ LOGINFO_2(2, "Parameter %p, Type %u", operation.getParameterValue(i),(int) operation.getParameterType(i));
+ }
+
+ // Create the Axis2 client that will handle the Web Service invocation
+ Service* service = getService();
+ CompositeReference* compositeReference = (CompositeReference*)service->getComponent();
+
+ Axis2Client client(compositeReference);
+ client.invoke(operation);
+
+ LOGEXIT(1, "WSServiceWrapper::invoke");
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.h
new file mode 100644
index 0000000000..93607db4a2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.h
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_ws_wsservicewrapper_h
+#define tuscany_sca_extension_ws_wsservicewrapper_h
+
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/core/Operation.h"
+#include "tuscany/sca/model/Service.h"
+
+using namespace tuscany::sca::model;
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+
+ namespace ws
+ {
+
+ class WSServiceWrapper : public ServiceWrapper
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param target The service wrapper represents a Web service.
+ */
+ WSServiceWrapper(Service* service);
+
+ /**
+ * Destructor
+ */
+ virtual ~WSServiceWrapper();
+
+ /**
+ * All business method calls on the target service are performed through
+ * this invoke method.
+ * @param operation The details of the method, paramaters and return value for the
+ * business method to be called on the target service.
+ */
+ virtual void invoke(Operation& operation);
+ };
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_ws_wsservicewrapper_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.cpp
new file mode 100644
index 0000000000..8980ec489b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.cpp
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/ws/model/WSServiceBinding.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/ws/WSServiceWrapper.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ // Constructor
+ WSServiceBinding::WSServiceBinding(Service* service, const string& uri, const string& endpoint, const string& version)
+ : ServiceBinding(service, uri), endpoint(endpoint), soapVersion(version)
+ {
+ parseEndpoint();
+
+ serviceWrapper = new WSServiceWrapper(service);
+ }
+
+ void WSServiceBinding::parseEndpoint()
+ {
+ // Endpoint is of the form: <wsdl-namepace-uri>#wsdl.endpoint(<service-name>/<endpoint-name>)
+ string::size_type hash = endpoint.find("#");
+ if (hash != string::npos)
+ {
+ // Found a hash
+
+ // Namepace is the part before the #
+ wsdlNamespaceURL = endpoint.substr(0, hash);
+
+
+ if ( (hash+1) < endpoint.length())
+ {
+ // Check the next part is wsdl.endpoint(
+ int ending = hash+15;
+ string check = endpoint.substr(hash+1, 14);
+ if (check.compare("wsdl.endpoint(") == 0)
+ {
+ // Find the matching )
+ int endBracket = endpoint.find(")",ending);
+ if (endBracket-1 > ending+1)
+ {
+ string serviceAndEndpoint = endpoint.substr(ending, endBracket-ending);
+ // Look for a '/'
+ string::size_type slash = serviceAndEndpoint.find("/");
+ if (slash != string::npos)
+ {
+ serviceName = serviceAndEndpoint.substr(0, slash);
+
+ if ( (slash+1) < serviceAndEndpoint.length())
+ {
+ endpointName = serviceAndEndpoint.substr(slash+1);
+ }
+ else
+ {
+ endpointName = "";
+ }
+
+ }
+ else
+ {
+ // No '/' so all of it is the service name
+ serviceName = serviceAndEndpoint;
+ endpointName = "";
+
+ }
+ }
+ else
+ {
+ // Nothing between the ()
+ serviceName = "";
+ endpointName = "";
+ }
+ }
+ else
+ {
+ // not the correct characters after the #, ignore the rest
+ serviceName = "";
+ endpointName = "";
+ }
+
+ }
+ else
+ {
+ // Nothing after the hash
+ serviceName = "";
+ endpointName = "";
+ }
+ }
+ else
+ {
+ // No hash at all
+ wsdlNamespaceURL = endpoint;
+ serviceName = "";
+ endpointName = "";
+ }
+ }
+
+ // Destructor
+ WSServiceBinding::~WSServiceBinding()
+ {
+ }
+
+ ServiceWrapper* WSServiceBinding::getServiceWrapper()
+ {
+ return serviceWrapper;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.h
new file mode 100644
index 0000000000..15691ce6eb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.h
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_ws_model_wsservicebinding_h
+#define tuscany_sca_extension_ws_model_wsservicebinding_h
+
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/model/Service.h"
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+ /**
+ * Information about a web service binding for service or a reference.
+ */
+ class WSServiceBinding : public model::ServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ * @param endpoint The definition of the endpoint to which the service
+ * or reference is to be bound. This is of the form
+ * "namespace"#endpoint("service"/"endpoint")
+ */
+ WSServiceBinding(model::Service* service, const string& uri, const string& endpoint, const string& version);
+
+ /**
+ * Destructor.
+ */
+ virtual ~WSServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#WebServiceBinding"; };
+
+ /**
+ * Create a wrapper for the service configured by this
+ * binding.
+ */
+ virtual ServiceWrapper* getServiceWrapper();
+
+ /**
+ * Return the part of the endpoint definition describing the wsdl
+ * namespace.
+ * @return The wsdl namespace.
+ */
+ string getWSDLNamespaceURL() const { return wsdlNamespaceURL; };
+
+ /**
+ * Return the service part of the endpoint definition.
+ * @return The service to use.
+ */
+ string getServiceName() const { return serviceName; };
+
+ /**
+ * Return the endpoint name part of the endpoint definition.
+ * @return The endpoint name to use.
+ */
+ string getEndpointName() const { return endpointName; };
+
+ /**
+ * Return the SOAP version.
+ * @return The SOAP version to use.
+ */
+ string getSOAPVersion() const { return soapVersion; };
+
+ private:
+
+ /**
+ * Parse the endpoint specification.
+ */
+ void parseEndpoint();
+
+ /**
+ * The full endpoint string.
+ */
+ string endpoint;
+
+ /**
+ * Namespace from the endpoint.
+ */
+ string wsdlNamespaceURL;
+
+ /**
+ * Service name from the endpoint.
+ */
+ string serviceName;
+
+ /**
+ * WSDL Endpoint name.
+ */
+ string endpointName;
+
+ /**
+ * SOAP version.
+ */
+ string soapVersion;
+
+ /**
+ * The wrapper for the service configured by this binding.
+ */
+ ServiceWrapper* serviceWrapper;
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_model_wsservicebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/deploy.bat
new file mode 100644
index 0000000000..2bba10425c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/reference/deploy.bat
@@ -0,0 +1,65 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set wsextdir=%extdir%\ws
+set refextdir=%wsextdir%\reference
+set srcdir=%rootdir%\runtime\extensions\ws\reference
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+call %srcdir%\..\deploy.bat %rootdir%
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %wsextdir% mkdir %wsextdir%
+if not exist %refextdir% mkdir %refextdir%
+if not exist %refextdir%\bin mkdir %refextdir%\bin
+if not exist %refextdir%\lib mkdir %refextdir%\lib
+
+set libname=tuscany_sca_ws_reference
+
+del %refextdir%\bin\%libname%.*
+del %refextdir%\lib\%libname%.*
+
+copy %inpath%\%libname%.lib %refextdir%\lib
+copy %inpath%\%libname%.dll %refextdir%\bin
+
+if exist %inpath%\%libname%.pdb copy %inpath%\%libname%.pdb %refextdir%\bin
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/Makefile.am
new file mode 100644
index 0000000000..18e9ba89b9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = axis2c
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/Makefile.am
new file mode 100644
index 0000000000..feadf9e317
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = src \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am
new file mode 100644
index 0000000000..37ab185259
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am
@@ -0,0 +1,86 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+libdir=$(prefix)/extensions/ws/service/lib
+lib_LTLIBRARIES = \
+libtuscany_sca_ws_service.la \
+libtuscany_sca_ws_dispatcher.la
+
+noinst_HEADERS = \
+tuscany/sca/ws/*.h \
+tuscany/sca/ws/model/*.h
+
+libtuscany_sca_ws_service_la_SOURCES = \
+tuscany/sca/ws/WSReferenceBindingExtension.cpp \
+tuscany/sca/ws/model/WSReferenceBinding.cpp \
+tuscany/sca/ws/WSServiceProxy.cpp \
+tuscany/sca/ws/Axis2Service.cpp \
+tuscany/sca/ws/Axis2Utils.cpp
+
+libtuscany_sca_ws_service_la_LIBADD = \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -lwoden \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+rootdir=$(prefix)/extensions/ws/service
+root_DATA = axis2.xml
+root_SCRIPTS = deploy.sh
+
+libtuscany_sca_ws_dispatcher_la_SOURCES = \
+tuscany/sca/ws/Axis2Dispatcher.cpp \
+tuscany/sca/ws/Axis2DispatcherModule.cpp
+
+libtuscany_sca_ws_dispatcher_la_LIBADD = \
+ -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -lwoden \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+servicedir=$(rootdir)/services/tuscany
+service_DATA = services.xml
+
+moduledir=$(rootdir)/modules/tuscany
+module_DATA = module.xml
+
+EXTRA_DIST = axis2.xml services.xml module.xml deploy.sh
+
+install-data-hook:
+ cd $(servicedir); ln -s -f ../../lib/libtuscany_sca_ws_service.so libtuscany_sca_ws_service.so
+ cd $(moduledir); ln -s -f ../../lib/libtuscany_sca_ws_dispatcher.so libtuscany_sca_ws_dispatcher.so
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include \
+ -I${AXIS2C_HOME}/include
+
+AM_CPPFLAGS = $(CPPFLAGS) -D_DEBUG
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/axis2.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/axis2.xml
new file mode 100644
index 0000000000..641085466e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/axis2.xml
@@ -0,0 +1,181 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<axisconfig name="Axis2/C">
+ <!-- ================================================= -->
+ <!-- Parameters -->
+ <!-- ================================================= -->
+ <parameter name="hotdeployment" locked="false">false</parameter>
+ <parameter name="hotupdate" locked="false">false</parameter>
+ <parameter name="enableMTOM" locked="false">false</parameter>
+ <parameter name="enableREST" locked="false">true</parameter>
+
+ <parameter name="userName" locked="false">admin</parameter>
+ <parameter name="password" locked="false">axis2</parameter>
+
+ <parameter name="seralizeLocation" locked="false">.</parameter>
+ <hostConfiguration>
+ <ip>127.0.0.1</ip>
+ <port>5555</port>
+ </hostConfiguration>
+
+
+ <!--if you want to extract the service archive file and work with that please uncomment this-->
+ <!--else , it wont extract archive file or does not take into consideration if someone drop-->
+ <!--exploded directory into /service directory-->
+ <!--<parameter name="extractServiceArchive" locked="false">true</parameter>-->
+
+
+ <!-- The way of adding listener to the system-->
+ <!-- <listener class="org.apache.axis2.ObserverIMPL">-->
+ <!-- <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
+ <!-- </listener>-->
+
+ <!-- ================================================= -->
+ <!-- Message Receivers -->
+ <!-- ================================================= -->
+ <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+ <!--messageReceiver mep="INOUT" class="axis2_receivers"/-->
+
+ <!-- ================================================= -->
+ <!-- Transport Ins -->
+ <!-- ================================================= -->
+ <transportReceiver name="http" class="axis2_http_receiver">
+ <parameter name="port" locked="false">6060</parameter>
+ </transportReceiver>
+
+ <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+ <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+ <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+ <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+ <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+ <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+ <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+ </transportReceiver> -->
+
+ <!--
+ <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+ <parameter name="port" locked="false">6060</parameter>
+ </transportReceiver>
+ -->
+ <!-- ================================================= -->
+ <!-- Transport Outs -->
+ <!-- ================================================= -->
+
+ <!--
+ <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+ <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+ -->
+ <transportSender name="http" class="axis2_http_sender">
+ <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+ <!--parameter name="Transfer-Encoding">chunked</parameter-->
+ <!--parameter name="PROXY" proxy_host="127.0.0.1" proxy_port="8080" locked="true"/-->
+ </transportSender>
+ <!--
+ <transportSender name="https" class="axis2_http_sender">
+ <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+ </transportSender>
+ -->
+ <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+ <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
+ <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+ <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+ <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+ <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+ </transportSender>
+ -->
+
+ <!-- ================================================= -->
+ <!-- Global Modules -->
+ <!-- ================================================= -->
+ <!-- Comment this to disable Addressing -->
+ <module ref="addressing"/>
+
+ <module ref="tuscany"/>
+
+ <!--Configuring module , providing paramters for modules whether they refer or not-->
+ <!--<moduleConfig name="addressing">-->
+ <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
+ <!--</moduleConfig>-->
+
+ <!-- ================================================= -->
+ <!-- Phases -->
+ <!-- ================================================= -->
+ <phaseOrder type="inflow">
+ <!-- System pre defined phases -->
+ <phase name="TransportIn"/>
+ <phase name="PreDispatch"/>
+ <phase name="Dispatch">
+ <handler name="AddressingBasedDispatcher"
+ class="axis2_engine">
+ <order phase="Dispatch"/>
+ </handler>
+ <handler name="RequestURIBasedDispatcher"
+ class="axis2_engine">
+ <order phase="Dispatch"/>
+ </handler>
+ <handler name="SOAPActionBasedDispatcher"
+ class="axis2_engine">
+ <order phase="Dispatch"/>
+ </handler>
+ <handler name="SOAPMessageBodyBasedDispatcher"
+ class="axis2_engine">
+ <order phase="Dispatch"/>
+ </handler>
+ </phase>
+ <phase name="PostDispatch">
+ <handler name="DispatchPostConditionsEvaluator"
+ class="axis2_engine">
+ <order phase="PostDispatch"/>
+ </handler>
+ <handler name="InstanceDispatcher"
+ class="axis2_engine">
+ <order phase="PostDispatch"/>
+ </handler>
+ <handler name="SOAPProcessingModelChecker"
+ class="axis2_engine">
+ <order phase="PostDispatch"/>
+ </handler>
+ </phase>
+ <!-- System pre defined phases -->
+ <!-- After Postdispatch phase module author or or service author can add any phase he want -->
+ <!--phase name="userphase1"/-->
+ </phaseOrder>
+ <phaseOrder type="outflow">
+ <!-- user can add his own phases to this area -->
+ <!--phase name="RMPhase"/-->
+ <!--phase name="userphase1"/-->
+ <!--system predefined phase-->
+ <!--these phase will run irrespective of the service-->
+ <!--phase name="PolicyDetermination"/-->
+ <!--phase name="MessageOut"/-->
+ </phaseOrder>
+ <phaseOrder type="INfaultflow">
+ <!-- user can add his own phases to this area -->
+ <!--phase name="userphase1"/-->
+ <!--phase name="RMPhase"/-->
+ </phaseOrder>
+ <phaseOrder type="Outfaultflow">
+ <!-- user can add his own phases to this area -->
+ <!--phase name="RMPhase"/-->
+ <!--phase name="userphase1"/-->
+ <!--phase name="PolicyDetermination"/-->
+ <phase name="MessageOut"/>
+ </phaseOrder>
+</axisconfig>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.cmd
new file mode 100644
index 0000000000..6493e1cec9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.cmd
@@ -0,0 +1,39 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+rem Will deploy the Tuscany SCA WS service Axis2C service and module
+rem to the correct places within the AXIS2C_HOME directory
+setlocal
+set currentPath=%~d0%~p0
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Deploying to Axis2C installed at %AXIS2C_HOME%
+
+if not exist %AXIS2C_HOME%\services\tuscany mkdir %AXIS2C_HOME%\services\tuscany
+if not exist %AXIS2C_HOME%\modules\tuscany mkdir %AXIS2C_HOME%\modules\tuscany
+
+copy %currentPath%\services\tuscany\* %AXIS2C_HOME%\services\tuscany
+copy %currentPath%\modules\tuscany\* %AXIS2C_HOME%\modules\tuscany
+copy %currentPath%\axis2.xml %AXIS2C_HOME%\axis2.xml
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.sh
new file mode 100755
index 0000000000..ffe571b0ee
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/deploy.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Deploying to Axis2C installed at $AXIS2C_HOME"
+
+if ! [ -d $AXIS2C_HOME/services/tuscany ]; then
+ mkdir $AXIS2C_HOME/services/tuscany
+fi
+
+if ! [ -d $AXIS2C_HOME/modules/tuscany ]; then
+ mkdir $AXIS2C_HOME/modules/tuscany
+fi
+
+cp $APFULLDIR/services/tuscany/services.xml $AXIS2C_HOME/services/tuscany
+
+if ! [ -f $AXIS2C_HOME/services/tuscany/libtuscany_sca_ws_service.so ]; then
+ ln -s $APFULLDIR/services/tuscany/libtuscany_sca_ws_service.so $AXIS2C_HOME/services/tuscany/libtuscany_sca_ws_service.so
+fi
+
+cp $APFULLDIR/modules/tuscany/module.xml $AXIS2C_HOME/modules/tuscany
+if ! [ -f $AXIS2C_HOME/modules/tuscany/libtuscany_sca_ws_dispatcher.so ]; then
+ ln -s $APFULLDIR/modules/tuscany/libtuscany_sca_ws_dispatcher.so $AXIS2C_HOME/modules/tuscany/libtuscany_sca_ws_dispatcher.so
+fi
+
+cp $APFULLDIR/axis2.xml $AXIS2C_HOME/axis2.xml
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/module.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/module.xml
new file mode 100644
index 0000000000..97d4d43a86
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/module.xml
@@ -0,0 +1,25 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<module name="tuscany" class="tuscany_sca_ws_dispatcher">
+ <inflow>
+ <handler name="TuscanyDispatcher" class="tuscany_sca_ws_dispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+ </inflow>
+</module>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/services.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/services.xml
new file mode 100644
index 0000000000..335d4d96be
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/services.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<serviceGroup>
+<service name="TuscanyService">
+ <parameter name="ServiceClass" locked="xsd:false">tuscany_sca_ws_service</parameter>
+ <operation name="execute"/>
+</service>
+</serviceGroup>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Dispatcher.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Dispatcher.cpp
new file mode 100644
index 0000000000..fe3eb52064
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Dispatcher.cpp
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#pragma warning(disable: 4091)
+#endif
+
+#include <axis2_handler_desc.h>
+#include <axis2_qname.h>
+#include <axis2_relates_to.h>
+#include <axis2_svc.h>
+#include <axis2_const.h>
+#include <axis2_conf_ctx.h>
+#include <axis2_addr.h>
+#include <axis2_utils.h>
+#include <axiom_soap_envelope.h>
+#include <axiom_soap_body.h>
+
+extern "C"
+{
+
+axis2_status_t AXIS2_CALL
+Axis2Dispatcher_invoke (
+ axis2_handler_t * handler,
+ const axis2_env_t *env,
+ struct axis2_msg_ctx *msg_ctx);
+
+axis2_svc_t *AXIS2_CALL
+Axis2Dispatcher_find_svc(
+ axis2_msg_ctx_t *msg_ctx,
+ const axis2_env_t *env);
+
+axis2_op_t *AXIS2_CALL
+Axis2Dispatcher_find_op(
+ axis2_msg_ctx_t *msg_ctx,
+ const axis2_env_t *env,
+ axis2_svc_t *svc);
+
+AXIS2_EXPORT axis2_handler_t* AXIS2_CALL
+Axis2Dispatcher_create(const axis2_env_t *env,
+ axis2_qname_t *qname)
+{
+ axis2_handler_t *handler = NULL;
+
+ handler = axis2_handler_create(env);
+ if (!handler)
+ {
+ return NULL;
+ }
+
+ /* handler init is handled by conf loading, so no need to do it here */
+
+ /* set the base struct's invoke op */
+ if (handler->ops)
+ handler->ops->invoke = Axis2Dispatcher_invoke;
+
+ return handler;
+}
+
+axis2_svc_t *AXIS2_CALL
+Axis2Dispatcher_find_svc(
+ axis2_msg_ctx_t *msg_ctx,
+ const axis2_env_t *env)
+{
+ axis2_svc_t *svc = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ axis2_conf_ctx_t *conf_ctx = NULL;
+ conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx, env);
+ if (conf_ctx)
+ {
+ axis2_conf_t *conf = NULL;
+ conf = AXIS2_CONF_CTX_GET_CONF(conf_ctx, env);
+ if (conf)
+ {
+ axis2_char_t* service_name = "TuscanyService";
+ svc = AXIS2_CONF_GET_SVC(conf, env, service_name);
+ if (svc)
+ {
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "Service found using target endpoint address");
+ }
+ }
+ }
+
+ return svc;
+}
+
+axis2_op_t *AXIS2_CALL
+Axis2Dispatcher_find_op(
+ axis2_msg_ctx_t *msg_ctx,
+ const axis2_env_t *env,
+ axis2_svc_t *svc)
+{
+ axis2_op_t *op = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ axis2_qname_t *op_qname = NULL;
+ axis2_char_t* execute_op_name = "execute";
+ op_qname = axis2_qname_create(env, execute_op_name, NULL, NULL);
+
+ op = AXIS2_SVC_GET_OP_WITH_NAME(svc, env, AXIS2_QNAME_GET_LOCALPART(op_qname, env));
+
+ AXIS2_QNAME_FREE(op_qname, env);
+ if (op)
+ {
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
+ "TuscanyService execute operation found");
+ }
+ return op;
+}
+
+axis2_status_t AXIS2_CALL
+Axis2Dispatcher_invoke(
+ axis2_handler_t * handler,
+ const axis2_env_t *env,
+ struct axis2_msg_ctx *msg_ctx)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ if (!(AXIS2_MSG_CTX_GET_SERVER_SIDE(msg_ctx, env)))
+ return AXIS2_SUCCESS;
+
+ msg_ctx->ops->find_svc = Axis2Dispatcher_find_svc;
+ msg_ctx->ops->find_op = Axis2Dispatcher_find_op;
+
+ axis2_svc_t *axis_service = NULL;
+ axis2_op_t *op = NULL;
+
+ axis_service = AXIS2_MSG_CTX_GET_SVC(msg_ctx, env);
+
+ if (!axis_service)
+ {
+ axis_service = AXIS2_MSG_CTX_FIND_SVC(msg_ctx, env);
+ if (axis_service)
+ {
+ AXIS2_MSG_CTX_SET_SVC(msg_ctx, env, axis_service);
+ /*TODO Set the Service Group Context to the message Context*/
+ }
+ }
+ op = AXIS2_MSG_CTX_GET_OP(msg_ctx, env);
+ if (!op)
+ {
+ op = AXIS2_MSG_CTX_FIND_OP(msg_ctx, env, axis_service);
+
+ if (op)
+ {
+ AXIS2_MSG_CTX_SET_OP(msg_ctx, env, op);
+ }
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2DispatcherModule.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2DispatcherModule.cpp
new file mode 100644
index 0000000000..0dc8f3358a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2DispatcherModule.cpp
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#pragma warning(disable: 4091)
+#endif
+
+#include <axis2_module.h>
+#include <axis2_addr_mod.h>
+#include <axis2_conf_ctx.h>
+#include <axis2_disp.h>
+
+extern "C"
+{
+
+axis2_status_t AXIS2_CALL
+Axis2DispatcherModule_shutdown(axis2_module_t *module,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+Axis2DispatcherModule_init(
+ axis2_module_t *module,
+ const axis2_env_t *env,
+ axis2_conf_ctx_t *conf_ctx,
+ axis2_module_desc_t *module_desc);
+
+axis2_status_t AXIS2_CALL
+Axis2DispatcherModule_fill_handler_create_func_map(axis2_module_t *module,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_handler_t* AXIS2_CALL
+Axis2Dispatcher_create(const axis2_env_t *env,
+ axis2_qname_t *qname);
+
+axis2_module_t *
+Axis2DispatcherModule_create(const axis2_env_t *env)
+{
+ axis2_module_t *module = NULL;
+ module = (axis2_module_t*)AXIS2_MALLOC(env->allocator,
+ sizeof(axis2_module_t));
+
+
+ module->ops = (axis2_module_ops_t*)AXIS2_MALLOC(
+ env->allocator, sizeof(axis2_module_ops_t));
+
+ module->ops->shutdown = Axis2DispatcherModule_shutdown;
+ module->ops->init = Axis2DispatcherModule_init;
+ module->ops->fill_handler_create_func_map =
+ Axis2DispatcherModule_fill_handler_create_func_map;
+
+ return module;
+}
+
+axis2_status_t AXIS2_CALL
+Axis2DispatcherModule_init(
+ axis2_module_t *module,
+ const axis2_env_t *env,
+ axis2_conf_ctx_t *conf_ctx,
+ axis2_module_desc_t *module_desc)
+{
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+Axis2DispatcherModule_shutdown(axis2_module_t *module,
+ const axis2_env_t *env)
+{
+ if(module->ops)
+ {
+ AXIS2_FREE(env->allocator, module->ops);
+ module->ops = NULL;
+ }
+
+ if(module->handler_create_func_map)
+ {
+ axis2_hash_free(module->handler_create_func_map, env);
+ module->handler_create_func_map = NULL;
+ }
+
+ if(module)
+ {
+ AXIS2_FREE(env->allocator, module);
+ module = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+Axis2DispatcherModule_fill_handler_create_func_map(axis2_module_t *module,
+ const axis2_env_t *env)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ module->handler_create_func_map = axis2_hash_make(env);
+ axis2_hash_set(module->handler_create_func_map, "TuscanyDispatcher",
+ (axis2_ssize_t)AXIS2_HASH_KEY_STRING, (const void *)Axis2Dispatcher_create);
+
+ return AXIS2_SUCCESS;
+}
+
+/**
+ * Following block distinguish the exposed part of the dll.
+ */
+
+AXIS2_EXPORT int
+axis2_get_instance(axis2_module_t **inst,
+ const axis2_env_t *env)
+{
+ *inst = Axis2DispatcherModule_create(env);
+ if(!(*inst))
+ {
+ return AXIS2_FAILURE;
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXPORT int
+axis2_remove_instance(axis2_module_t *inst,
+ const axis2_env_t *env)
+{
+ axis2_status_t status = AXIS2_FAILURE;
+ if (inst)
+ {
+ status = Axis2DispatcherModule_shutdown(inst, env);
+ }
+ return status;
+}
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp
new file mode 100644
index 0000000000..046a6e221b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp
@@ -0,0 +1,506 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#pragma warning(disable: 4091)
+#endif
+
+#include <axis2_svc_skeleton.h>
+#include <axis2_array_list.h>
+#include <axis2_log_default.h>
+#include <axis2_error_default.h>
+#include <axiom.h>
+#include <stdio.h>
+
+#include <sdo_axiom.h>
+using commonj::sdo::DataObjectPtr;
+using commonj::sdo::DataFactoryPtr;
+using commonj::sdo::DataObjectList;
+using commonj::sdo::PropertyList;
+using commonj::sdo_axiom::AxiomHelper;
+
+#include "tuscany/sca/util/Exceptions.h"
+#include "WSServiceProxy.h"
+#include "model/WSReferenceBinding.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/CompositeService.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/WSDLDefinition.h"
+#include "tuscany/sca/model/WSDLOperation.h"
+#include "tuscany/sca/model/WSDLInterface.h"
+#include "tuscany/sca/model/Interface.h"
+#include "tuscany/sca/core/TuscanyRuntime.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/util/Utils.h"
+#include "Axis2Utils.h"
+
+using namespace tuscany::sca;
+using namespace tuscany::sca::ws;
+using namespace tuscany::sca::model;
+
+int AXIS2_CALL
+Axis2Service_free(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env);
+
+/*
+ * This method invokes the right service method
+ */
+axiom_node_t* AXIS2_CALL
+Axis2Service_invoke(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env,
+ axiom_node_t *node,
+ axis2_msg_ctx_t *msg_ctx);
+
+int AXIS2_CALL Axis2Service_init(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env);
+
+axis2_svc_skeleton_t *
+axis2_Axis2Service_create(axis2_env_t *env)
+{
+ axis2_svc_skeleton_t *svc_skeleton = NULL;
+ svc_skeleton = (axis2_svc_skeleton_t *) AXIS2_MALLOC((env)->allocator,
+ sizeof(axis2_svc_skeleton_t));
+
+
+ svc_skeleton->ops = (axis2_svc_skeleton_ops_t *) AXIS2_MALLOC(
+ (env)->allocator, sizeof(axis2_svc_skeleton_ops_t));
+
+ svc_skeleton->func_array = NULL;
+
+ svc_skeleton->ops->free = Axis2Service_free;
+ svc_skeleton->ops->init = Axis2Service_init;
+ svc_skeleton->ops->invoke = Axis2Service_invoke;
+ /*svc_skeleton->ops->on_fault = Axis2Service_on_fault;*/
+
+ return svc_skeleton;
+}
+
+int AXIS2_CALL
+Axis2Service_init(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env)
+{
+ // This method never seems to be called - an old Axis2C artifact?
+
+ svc_skeleton->func_array = axis2_array_list_create(env, 0);
+ return AXIS2_SUCCESS;
+}
+
+int AXIS2_CALL
+Axis2Service_free(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env)
+{
+ /*if(svc_skeleton->func_array)
+ {
+ AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
+ svc_skeleton->func_array = NULL;
+ }*/
+
+ if(svc_skeleton->ops)
+ {
+ AXIS2_FREE((env)->allocator, svc_skeleton->ops);
+ svc_skeleton->ops = NULL;
+ }
+
+ if(svc_skeleton)
+ {
+ AXIS2_FREE((env)->allocator, svc_skeleton);
+ svc_skeleton = NULL;
+ }
+ return AXIS2_SUCCESS;
+}
+
+/**
+ * Initialize the Tuscany runtime
+ */
+
+static string systemRoot = "";
+static string componentName = "";
+static string serviceName = "";
+static TuscanyRuntime* tuscanyRuntime = NULL;
+static CompositeService* compositeService = NULL;
+
+void initTuscanyRuntime(const axis2_env_t *env, const char* root, const char *component, const char* service)
+{
+ AXIS2_LOG_INFO((env)->log, "Axis2Service init, root: %s, component: %s, service: %s\n", root, component, service);
+ try
+ {
+
+ bool newInitParams = false;
+
+ if(systemRoot != root)
+ {
+ systemRoot = root;
+ newInitParams = true;
+ }
+
+ if(componentName != component)
+ {
+ componentName = component;
+ newInitParams = true;
+ }
+
+ if(serviceName != service)
+ {
+ serviceName = service;
+ newInitParams = true;
+ }
+
+ if(tuscanyRuntime == NULL)
+ {
+ AXIS2_LOG_INFO((env)->log, "Creating new Tuscany runtime\n");
+ tuscanyRuntime = new TuscanyRuntime(componentName, systemRoot);
+ tuscanyRuntime->start();
+ }
+ else if(tuscanyRuntime != NULL && newInitParams)
+ {
+ AXIS2_LOG_INFO((env)->log, "Restarting Tuscany runtime\n");
+ tuscanyRuntime->stop();
+ tuscanyRuntime->setDefaultComponentName(componentName);
+ tuscanyRuntime->setSystemRoot(systemRoot);
+ tuscanyRuntime->start();
+ }
+
+ if(compositeService == NULL)
+ {
+ Composite* composite = (Composite*)SCARuntime::getInstance()->getDefaultComponent()->getType();
+ compositeService = (CompositeService*)composite->findComponent(serviceName);
+ }
+ else
+ {
+ if(newInitParams)
+ {
+ Composite* composite = SCARuntime::getInstance()->getDefaultComponent()->getComposite();
+ compositeService = (CompositeService*)composite->findComponent(serviceName);
+ }
+ }
+ }
+ catch(TuscanyRuntimeException &ex)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "%s has been caught: %s\n", ex.getEClassName(), ex.getMessageText());
+ }
+}
+
+
+/*
+ * This method invokes the target service method
+ */
+axiom_node_t* AXIS2_CALL
+Axis2Service_invoke(axis2_svc_skeleton_t *svc_skeleton,
+ const axis2_env_t *env,
+ axiom_node_t *node,
+ axis2_msg_ctx_t *msg_ctx)
+{
+ if (node)
+ {
+ if (AXIOM_NODE_GET_NODE_TYPE(node, env) == AXIOM_ELEMENT)
+ {
+ axiom_element_t *element = NULL;
+ element = (axiom_element_t *)AXIOM_NODE_GET_DATA_ELEMENT(node, env);
+ if (element)
+ {
+ string op_name = "";
+ axis2_bool_t rest = AXIS2_MSG_CTX_GET_DOING_REST(msg_ctx, env);
+ if (rest)
+ {
+ axis2_endpoint_ref_t *endpoint_ref = AXIS2_MSG_CTX_GET_FROM(msg_ctx, env);
+ if (endpoint_ref)
+ {
+ const axis2_char_t *address = AXIS2_ENDPOINT_REF_GET_ADDRESS(endpoint_ref, env);
+ if (address)
+ {
+ axis2_char_t **url_tokens = axis2_parse_request_url_for_svc_and_op(env, address);
+ if (url_tokens)
+ {
+ if (url_tokens[1])
+ {
+ op_name = url_tokens[1];
+ }
+ if (NULL != url_tokens[1])
+ AXIS2_FREE(env->allocator, url_tokens[1]);
+ if (NULL != url_tokens[0])
+ AXIS2_FREE(env->allocator, url_tokens[0]);
+ AXIS2_FREE(env->allocator, url_tokens);
+ }
+ }
+ }
+ }
+ else
+ {
+ // This gets the operation name from the root element name - this is correct for DocLit Wrapped style
+ op_name = AXIOM_ELEMENT_GET_LOCALNAME(element, env);
+ }
+
+ if (op_name != "")
+ {
+ // Get the Tuscany system root and composite service name from the Axis2
+ // service parameters
+ char* rootParam = Axis2Utils::getAxisServiceParameterValue(env, msg_ctx, "TuscanySystemRoot");
+ if (rootParam == NULL)
+ rootParam = "";
+
+ char* serviceParam = Axis2Utils::getAxisServiceParameterValue(env, msg_ctx, "TuscanyService");
+ if (serviceParam != NULL)
+ {
+ AXIS2_LOG_INFO((env)->log, "Axis2Service invoke called with system root: %s, service name: %s, operation name: %s", rootParam, serviceParam, op_name.c_str());
+
+ // Service is of the form "component name"/"composite service name"
+ string component, service;
+ Utils::rTokeniseString("/", serviceParam, component, service);
+
+ initTuscanyRuntime(env, rootParam, component.c_str(), service.c_str());
+ }
+ else {
+
+ // Use the default system root and component, the service is
+ // derived from the target address
+ axis2_endpoint_ref_t *endpoint_ref = NULL;
+ endpoint_ref = AXIS2_MSG_CTX_GET_FROM(msg_ctx, env);
+ axis2_char_t *address = NULL;
+ address = (axis2_char_t*) AXIS2_ENDPOINT_REF_GET_ADDRESS(endpoint_ref, env);
+ axis2_char_t **url_tokens = NULL;
+ url_tokens = axis2_parse_request_url_for_svc_and_op(env, address);
+ string service(url_tokens[0]);
+
+ AXIS2_LOG_INFO((env)->log, "Axis2Service invoke called with system root: %s, service name: %s, operation name: %s", rootParam, service.c_str(), op_name.c_str());
+
+ initTuscanyRuntime(env, rootParam, "", service.c_str());
+ }
+
+ 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)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Service_invoke: CompositeService has no SCA implementation");
+ return 0;
+ }
+
+ // Get the WS binding and the WSDL operation
+ Composite* composite = compositeService->getComposite();
+ Reference* reference = compositeService->getReference();
+ WSReferenceBinding* binding = (WSReferenceBinding*)reference->getBinding();
+ WSDLOperation wsdlOperation;
+
+ string wsdlNamespace = binding->getWSDLNamespaceURL();
+ if (wsdlNamespace != "")
+ {
+
+ // Lookup the WSDL model from the composite, keyed on the namespace
+ // (the wsdl will have been loaded at startup)
+ WSDLDefinition* wsdlDefinition = composite->findWSDLDefinition(wsdlNamespace);
+ if (wsdlDefinition == 0)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "WSDL description %s not found\n", wsdlNamespace.c_str());
+ string msg = "WSDL not found for " + wsdlNamespace;
+ throw SystemConfigurationException(msg.c_str());
+ }
+
+ // Find the target operation in the wsdl port type.
+ try {
+ wsdlOperation = wsdlDefinition->findOperation(
+ binding->getServiceName(),
+ binding->getEndpointName(),
+ op_name.c_str());
+ }
+ catch(SystemConfigurationException &ex)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "SystemConfigurationException has been caught: %s\n", ex.getMessageText());
+ throw;
+ }
+
+ }
+ else
+ {
+ Interface* iface = reference->getType()->getInterface();
+ if (iface != NULL &&
+ iface->getInterfaceTypeQName() == WSDLInterface::typeQName)
+ {
+ WSDLInterface* wsdlInterface = (WSDLInterface*)iface;
+ wsdlNamespace = wsdlInterface->getNamespaceURI();
+
+ if (wsdlNamespace != "")
+ {
+
+ WSDLDefinition* wsdl = composite->findWSDLDefinition(wsdlNamespace);
+ if (wsdl == 0)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "WSDL description %s not found\n", wsdlNamespace.c_str());
+ string msg = "WSDL not found for " + wsdlNamespace;
+ throw SystemConfigurationException(msg.c_str());
+ }
+
+ try
+ {
+ wsdlOperation = wsdl->findOperation(wsdlInterface->getName(), op_name.c_str());
+ }
+ catch(SystemConfigurationException &ex)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "SystemConfigurationException has been caught: %s\n", ex.getMessageText());
+ throw;
+ }
+ }
+ }
+ }
+
+ if (wsdlNamespace == "")
+ {
+ // Create a default document literal wrapped WSDL operation
+ wsdlNamespace = compositeService->getName();
+ wsdlOperation = WSDLOperation();
+ wsdlOperation.setOperationName(op_name.c_str());
+ wsdlOperation.setSoapAction(wsdlNamespace+ "#" +op_name);
+ wsdlOperation.setEndpoint("");
+ wsdlOperation.setSoapVersion(WSDLOperation::SOAP11);
+ wsdlOperation.setDocumentStyle(true);
+ wsdlOperation.setWrappedStyle(true);
+ wsdlOperation.setEncoded(false);
+ wsdlOperation.setInputType(wsdlNamespace + "#" + op_name);
+ wsdlOperation.setOutputType(wsdlNamespace + "#" + op_name + "Response");
+ }
+
+ // Convert the input AXIOM node to an SDO DataObject
+ axiom_node_t* body = AXIOM_NODE_GET_PARENT(node, env);
+ char* str = NULL;
+ str = AXIOM_NODE_TO_STRING(body, env);
+ if (str)
+ {
+ AXIS2_LOG_INFO((env)->log, "Axis2Service invoke has request OM: %s\n", str);
+ }
+
+ // Convert the SOAP body to an SDO DataObject
+ AxiomHelper* axiomHelper = AxiomHelper::getHelper();
+ 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)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Service_invoke: Could not convert received Axiom node to SDO");
+ /** TODO: return a SOAP fault here */
+ return 0;
+ }
+
+ // Get the first body part representing the doc-lit-wrapped wrapper element
+ DataObjectPtr inputDataObject = NULL;
+ PropertyList bpl = inputBodyDataObject->getInstanceProperties();
+ if (bpl.size()!=0)
+ {
+ if (bpl[0].isMany())
+ {
+ DataObjectList& parts = inputBodyDataObject->getList((unsigned int)0);
+ inputDataObject = parts[0];
+ }
+ else
+ {
+ inputDataObject = inputBodyDataObject->getDataObject(bpl[0]);
+ }
+ }
+ if (inputDataObject == NULL)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Service_invoke: Could not convert body part to SDO");
+ return 0;
+ }
+
+ // Dispatch to the WS proxy
+ WSServiceProxy* proxy = (WSServiceProxy*)binding->getServiceProxy();
+
+ DataObjectPtr outputDataObject = proxy->invoke(wsdlOperation, inputDataObject);
+
+ if(!outputDataObject)
+ {
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Service_invoke: Failure whilst invoking CompositeService");
+
+ /** TODO: return a SOAP fault here */
+ return 0;
+ }
+
+ // Convert the output DataObject to an Axiom node
+ axiom_node_t* outputNode = axiomHelper->toAxiomNode(outputDataObject,
+ wsdlOperation.getOutputTypeUri().c_str(), wsdlOperation.getOutputTypeName().c_str());
+
+ AxiomHelper::releaseHelper(axiomHelper);
+
+ str = AXIOM_NODE_TO_STRING(outputNode, env);
+ if (str)
+ {
+ AXIS2_LOG_INFO((env)->log, "Axis2Service invoke has response OM : %s\n", str);
+ }
+
+
+ //LOGEXIT(1, "Axis2Service_invoke");
+ return outputNode;
+ }
+ }
+ }
+ }
+
+ AXIS2_LOG_ERROR((env)->log, AXIS2_LOG_SI, "Axis2Service_invoke: invalid OM parameters in request");
+ //LOGERROR(0, "Axis2Service service ERROR: invalid OM parameters in request\n");
+
+ /** TODO: return a SOAP fault here */
+ return 0;
+}
+
+
+extern "C"
+{
+
+/**
+ * Following block distinguish the exposed part of the dll.
+ */
+
+AXIS2_EXPORT int axis2_get_instance(axis2_svc_skeleton **inst,
+ axis2_env_t *env)
+{
+ *inst = axis2_Axis2Service_create(env);
+ if(!(*inst))
+ {
+ return AXIS2_FAILURE;
+ }
+
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXPORT int axis2_remove_instance(axis2_svc_skeleton_t *inst,
+ axis2_env_t *env)
+{
+ axis2_status_t status = AXIS2_FAILURE;
+ if (inst)
+ {
+ status = AXIS2_SVC_SKELETON_FREE(inst, env);
+ }
+ return status;
+}
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.cpp
new file mode 100644
index 0000000000..7a30ab2994
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.cpp
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#pragma warning(disable: 4091)
+#endif
+#include "Axis2Utils.h"
+
+#include <axis2_svc_ctx.h>
+#include <axis2_defines.h>
+
+#include "tuscany/sca/util/Logging.h"
+
+using namespace tuscany::sca;
+using namespace tuscany::sca::ws;
+
+
+/* Static utility method to retrieve service parameters from the service.xml file
+ * Get an odd linking error if this method (or the header's it requires) are in
+ * a different class.
+ */
+char* Axis2Utils::getAxisServiceParameterValue(const axis2_env_t *env, axis2_msg_ctx_t *msg_ctx, char* parameterName)
+{
+ struct axis2_svc *svc = NULL;
+ struct axis2_op_ctx *op_ctx = NULL;
+ struct axis2_svc_ctx *svc_ctx = NULL;
+ axis2_param_t *param = NULL;
+ char* paramValue = NULL;
+
+ LOGENTRY(1, "Axis2Utils::getAxisServiceParameterValue");
+
+ op_ctx = AXIS2_MSG_CTX_GET_OP_CTX(msg_ctx, env);
+ svc_ctx = AXIS2_OP_CTX_GET_PARENT(op_ctx, env);
+ svc = AXIS2_SVC_CTX_GET_SVC(svc_ctx, env);
+ if(NULL == svc)
+ {
+ return NULL;
+ }
+
+ param = AXIS2_SVC_GET_PARAM(svc, env, parameterName);
+ if(!param)
+ {
+ LOGERROR_1(1,"Axis parameter %s cannot be found", parameterName);
+ }
+ else
+ {
+ paramValue = (char*) AXIS2_PARAM_GET_VALUE(param, env);
+ }
+
+ LOGEXIT(1, "Axis2Utils::getAxisServiceParameterValue");
+ return paramValue;
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.h
new file mode 100644
index 0000000000..4e8b069010
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.h
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_ws_axis2utils_h
+#define tuscany_sca_extension_ws_axis2utils_h
+
+#include <axis2_env.h>
+#include <axis2_msg_ctx.h>
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ class Axis2Utils
+ {
+ public:
+ static char* getAxisServiceParameterValue(const axis2_env_t *env, axis2_msg_ctx_t *msg_ctx, char* parameterName);
+ };
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_axis2utils_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.cpp
new file mode 100644
index 0000000000..2cf5e5d8e1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.cpp
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "WSReferenceBindingExtension.h"
+#include "model/WSReferenceBinding.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+
+
+extern "C"
+{
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void tuscany_sca_extension_initialize()
+ {
+ tuscany::sca::ws::WSReferenceBindingExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+ // ===================================================================
+ // Constructor for the WSReferenceBinding class.
+ // ===================================================================
+ WSReferenceBindingExtension::WSReferenceBindingExtension()
+ {
+ LOGENTRY(1, "WSReferenceBindingExtension::constructor");
+ LOGEXIT(1, "WSReferenceBindingExtension::constructor");
+ }
+
+ // ===================================================================
+ // Destructor for the WSReferenceBindingExtension class.
+ // ===================================================================
+ WSReferenceBindingExtension::~WSReferenceBindingExtension()
+ {
+ LOGENTRY(1, "WSReferenceBindingExtension::destructor");;
+ LOGEXIT(1, "WSReferenceBindingExtension::destructor");
+ }
+
+ const string WSReferenceBindingExtension::extensionName("ws");
+ const string WSReferenceBindingExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#WebServiceBinding");
+
+ // ===================================================================
+ // loadModelElement - load the info from binding.ws
+ // ===================================================================
+ ReferenceBinding* WSReferenceBindingExtension::getReferenceBinding(Composite *composite, Reference* reference, DataObjectPtr scdlBinding)
+ {
+ string bindingType = scdlBinding->getType().getName();
+ if (bindingType == "WebServiceBinding")
+ {
+ string uri = scdlBinding->getCString("uri");
+ string endpoint = scdlBinding->getCString("endpoint");
+ commonj::sdo::DataObjectList& soap = scdlBinding->getList("soapbinding");
+ string version;
+ if (soap.size()!=0)
+ {
+ version = soap.getCString(0);
+ }
+ else
+ {
+ version = "";
+ }
+
+ WSReferenceBinding* serviceBinding = new WSReferenceBinding(reference, uri, endpoint, version);
+
+ return serviceBinding;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ void WSReferenceBindingExtension::initialize()
+ {
+ LOGENTRY(1, "WSReferenceBindingExtension::initialize");;
+ SCARuntime::getInstance()->registerReferenceBindingExtension(new WSReferenceBindingExtension());
+ LOGEXIT(1, "WSReferenceBindingExtension::initialize");;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.h
new file mode 100644
index 0000000000..c7972fe15a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.h
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_ws_wsreferencebindingextension_h
+#define tuscany_sca_extension_ws_wsreferencebindingextension_h
+
+#include "tuscany/sca/extension/ReferenceBindingExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ class WSReferenceBindingExtension : public ReferenceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ WSReferenceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~WSReferenceBindingExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const string& getExtensionTypeQName() {return typeQName;}
+
+ virtual ReferenceBinding* getReferenceBinding(Composite* composite, Reference *reference, DataObjectPtr scdlBinding);
+
+ static void initialize();
+
+ private:
+ static const string extensionName;
+ static const string typeQName;
+
+ };
+
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_wsreferencebindingextension_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
new file mode 100644
index 0000000000..960c91ed60
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp
@@ -0,0 +1,587 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "WSServiceProxy.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Exceptions.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/ReferenceType.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/ServiceType.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/ComponentType.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/model/WSDLDefinition.h"
+#include "tuscany/sca/model/WSDLInterface.h"
+#include "tuscany/sca/model/WSDLOperation.h"
+#include "model/WSReferenceBinding.h"
+
+#include "commonj/sdo/SDO.h"
+using namespace commonj::sdo;
+
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ // ============================
+ // Constructor: Create a proxy
+ // ============================
+ WSServiceProxy::WSServiceProxy(Reference* reference)
+ : ServiceProxy(reference)
+ {
+ LOGENTRY(1,"WSServiceProxy::constructor");
+
+ // Get the target service wrapper
+ WSReferenceBinding* referenceBinding = (WSReferenceBinding*)reference->getBinding();
+ serviceWrapper = referenceBinding->getTargetServiceBinding()->getServiceWrapper();
+
+ // Define the SOAP Body type and element to allow a SOAP body to
+ // be loaded in a DataObject
+ DataFactoryPtr dataFactory = reference->getComponent()->getComposite()->getDataFactory();
+ try {
+ const Type& bodyType = dataFactory->getType("http://www.w3.org/2003/05/soap-envelope", "Body");
+ } catch (SDORuntimeException e)
+ {
+
+ // Define the SOAP 1.2 Body type
+ dataFactory->addType("http://www.w3.org/2003/05/soap-envelope", "RootType", false, false, false);
+ dataFactory->addType("http://www.w3.org/2003/05/soap-envelope", "Body", false, true, false);
+ dataFactory->addPropertyToType(
+ "http://www.w3.org/2003/05/soap-envelope", "RootType",
+ "Body",
+ "http://www.w3.org/2003/05/soap-envelope", "Body",
+ false, false, true);
+
+ // Define the SOAP 1.1 Body type
+ dataFactory->addType("http://schemas.xmlsoap.org/soap/envelope/", "RootType", false, false, false);
+ dataFactory->addType("http://schemas.xmlsoap.org/soap/envelope/", "Body", false, true, false);
+ dataFactory->addPropertyToType(
+ "http://schemas.xmlsoap.org/soap/envelope/", "RootType",
+ "Body",
+ "http://schemas.xmlsoap.org/soap/envelope/", "Body",
+ false, false, true);
+ }
+
+ LOGEXIT(1,"WSServiceProxy::constructor");
+ }
+
+ // ==========
+ // Destructor
+ // ==========
+ WSServiceProxy::~WSServiceProxy()
+ {
+ LOGENTRY(1,"WSServiceProxy::destructor");
+ LOGEXIT(1,"WSServiceProxy::destructor");
+ }
+
+ ///
+ /// This method will be called to process an operation invocation.
+ ///
+ DataObjectPtr WSServiceProxy::invoke(const WSDLOperation& wsdlOperation, DataObjectPtr inputDataObject)
+ {
+ LOGENTRY(1,"WSServiceProxy::invoke");
+
+ Reference* reference = getReference();
+ Component* component = reference->getComponent();
+ Composite* composite = component ->getComposite();
+
+ WSReferenceBinding* referenceBinding = (WSReferenceBinding*)reference->getBinding();
+ DataFactoryPtr dataFactoryPtr = reference->getComponent()->getComposite()->getDataFactory();
+
+ bool documentStyle = wsdlOperation.isDocumentStyle();
+ bool wrappedStyle = wsdlOperation.isWrappedStyle();
+
+ const char* outputTypeURI = wsdlOperation.getOutputTypeUri().c_str();
+ const char* outputTypeName = wsdlOperation.getOutputTypeName().c_str();
+
+ LOGINFO_2(4, "WSServiceProxy has got WSDLOperation with inputType: %s#%s",
+ wsdlOperation.getInputTypeUri().c_str(),
+ wsdlOperation.getInputTypeName().c_str());
+ LOGINFO_2(4, "WSServiceProxy has got WSDLOperation with outputType: %s#%s",
+ outputTypeURI,
+ outputTypeName);
+ LOGINFO_2(4, "WSServiceProxy has got WSDLOperation with documentStyle=%d and wrapped=%d",
+ documentStyle,
+ wrappedStyle);
+
+ if (documentStyle)
+ {
+ if (wrappedStyle)
+ {
+
+ // Create new Operation object and set parameters and return value
+ Operation operation(wsdlOperation.getOperationName().c_str());
+
+ // Go through the input data object to set the operation parameters
+ PropertyList pl = inputDataObject->getInstanceProperties();
+
+ for(int i=0; i<pl.size(); i++)
+ {
+ const char* name = pl[i].getName();
+
+ switch (pl[i].getTypeEnum())
+ {
+ case Type::BooleanType:
+ {
+ bool* boolData = new bool;
+ *boolData = inputDataObject->getBoolean(pl[i]);
+ operation.addParameter(boolData);
+ }
+ break;
+ case Type::ByteType:
+ {
+ char* byteData = new char;
+ *byteData = inputDataObject->getByte(pl[i]);
+ operation.addParameter(byteData);
+ }
+ break;
+ case Type::BytesType:
+ {
+ int len = inputDataObject->getLength(pl[i]);
+ char* bytesData = new char[len+1];
+ int bytesWritten = inputDataObject->getBytes(pl[i], bytesData, len);
+ // Ensure the bytes end with the null char. Not sure if this is neccessary
+ if(bytesWritten <= len)
+ {
+ bytesData[bytesWritten] = 0;
+ }
+ else
+ {
+ bytesData[len] = 0;
+ }
+ operation.addParameter(&bytesData);
+ }
+ break;
+ case Type::CharacterType:
+ {
+ // This code should work but won't be used as there is no mapping from an XSD type to the SDO CharacterType
+ wchar_t* charData = new wchar_t;
+ *charData = inputDataObject->getCharacter(pl[i]);
+ operation.addParameter(charData);
+ }
+ break;
+ case Type::DoubleType:
+ {
+ long double* doubleData = new long double;
+ *doubleData = inputDataObject->getDouble(pl[i]);
+ operation.addParameter(doubleData);
+ }
+ break;
+ case Type::FloatType:
+ {
+ float* floatData = new float;
+ *floatData = inputDataObject->getFloat(pl[i]);
+ operation.addParameter(floatData);
+ }
+ break;
+ case Type::IntegerType:
+ {
+ long* intData = new long;
+ *intData = inputDataObject->getInteger(pl[i]);
+ operation.addParameter(intData);
+ }
+ break;
+ case Type::ShortType:
+ {
+ short* shortData = new short;
+ *shortData = inputDataObject->getShort(pl[i]);
+ operation.addParameter(shortData);
+ }
+ break;
+ case Type::StringType:
+ {
+ 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;
+ case Type::DataObjectType:
+ {
+ DataObjectPtr dataObjectData = inputDataObject->getDataObject(pl[i]);
+ if(!dataObjectData)
+ {
+ LOGINFO_1(4, "SDO DataObject parameter named %s was null", name);
+ }
+ operation.addParameter(&dataObjectData);
+ }
+ break;
+ case Type::OpenDataObjectType:
+ {
+ /*
+ * This code deals with xsd:any element parameters
+ * Get each element as a DataObject and add in to the parameter list
+ */
+
+ DataObjectList& dataObjectList = inputDataObject->getList(pl[i]);
+
+ for(int j=0; j<dataObjectList.size(); j++)
+ {
+ DataObjectPtr dataObjectData = dataObjectList[j];
+ if(!dataObjectData)
+ {
+
+ // Add a null DataObject ptr
+ LOGINFO_2(4, "SDO OpenDataObject parameter named %s[%d] was null", name, j);
+ operation.addParameter(&dataObjectData);
+ }
+ else
+ {
+
+ SequencePtr sequence = dataObjectData->getSequence();
+ if (sequence->size()!=0)
+ {
+ // Add a text element
+ if (sequence->isText(0))
+ {
+ string* stringData = new string(sequence->getCStringValue(0));
+ operation.addParameter(stringData);
+ }
+ else
+ {
+ // Add a complex element DataObject
+ DataObjectPtr dob = sequence->getDataObjectValue(0);
+ if(!dob)
+ {
+ LOGINFO_1(4, "SDO DataObject parameter named %s was null", name);
+ }
+ operation.addParameter(&dob);
+ }
+ }
+ else
+ {
+ // Empty content, add an empty string
+ LOGINFO_2(4, "SDO OpenDataObject parameter named %s[%d] was empty", name, j);
+ string* stringData = new string("");
+ operation.addParameter(stringData);
+ }
+ }
+ }
+ }
+ break;
+ case Type::DateType:
+ LOGERROR_1(0, "SDO DateType parameters are not yet supported (%s)", name);
+ return NULL;
+ case Type::LongType:
+ LOGERROR_1(0, "SDO LongType (int64_t) parameters are not yet supported (%s)", name);
+ return NULL;
+ break;
+ case Type::UriType:
+ LOGERROR_1(0, "SDO UriType parameters are not yet supported (%s)", name);
+ return NULL;
+ break;
+ case Type::BigDecimalType:
+ LOGERROR_1(0, "SDO BigDecimalType parameters are not yet supported (%s)", name);
+ return NULL;
+ break;
+ case Type::BigIntegerType:
+ LOGERROR_1(0, "SDO BigIntegerType parameters are not yet supported (%s)", name);
+ return NULL;
+ break;
+ default:
+ LOGERROR_1(0, "Unknown SDO type parameter named %s has been found. Unknown types are not yet supported", name);
+ return NULL;
+ }
+ }
+
+ try
+ {
+
+ // Call into the target service wrapper
+ serviceWrapper->invoke(operation);
+
+ // Set the data in the outputDataObject to be returned
+ DataObjectPtr outputDataObject;
+ try {
+
+ // Create the output wrapper
+ const Type& rootType = dataFactoryPtr->getType(outputTypeURI, "RootType");
+ const Property& prop = rootType.getProperty(outputTypeName);
+ const Type& outputType = prop.getType();
+ outputDataObject = dataFactoryPtr->create(outputType);
+ }
+ catch (SDORuntimeException e)
+ {
+ try
+ {
+
+ // Create the output wrapper
+ const Type& outputType = dataFactoryPtr->getType(outputTypeURI, outputTypeName);
+ outputDataObject = dataFactoryPtr->create(outputType);
+ }
+ catch (SDORuntimeException e)
+ {
+ // The output wrapper type is not known, create an open DataObject
+ outputDataObject = dataFactoryPtr->create(Type::SDOTypeNamespaceURI, "OpenDataObject");
+ }
+ }
+
+ setOutputData(operation, outputDataObject, dataFactoryPtr);
+
+ LOGEXIT(1,"WSServiceProxy::invoke");
+
+ return outputDataObject;
+
+ }
+ catch(SDORuntimeException &ex)
+ {
+ // TODO: Return more error information than just a null DataObject
+ LOGERROR_2(0, "%s has been caught: %s\n", ex.getEClassName(), ex.getMessageText());
+ return NULL;
+ }
+ catch(TuscanyRuntimeException &ex)
+ {
+ // TODO: Return more error information than just a null DataObject
+ LOGERROR_2(0, "%s has been caught: %s\n", ex.getEClassName(), ex.getMessageText());
+ return NULL;
+ }
+ }
+ else
+ {
+ LOGERROR(0, "CompositeServices with non-wrapped document style WSDL Operations are not yet supported");
+ LOGEXIT(1,"WSServiceProxy::invoke");
+ return NULL;
+ }
+ }
+ else
+ {
+ // RPC style
+ LOGERROR(0, "CompositeServices with RPC style WSDL Operations are not yet supported");
+ return NULL;
+ }
+ }
+
+
+ void WSServiceProxy::setOutputData(Operation& operation, DataObjectPtr outputDataObject, DataFactoryPtr dataFactoryPtr)
+ {
+ // Go through data object to set the return value
+ PropertyList pl = outputDataObject->getType().getProperties();
+
+ if(pl.size() == 0)
+ {
+ if(outputDataObject->getType().isOpenType() && outputDataObject->getType().isDataObjectType())
+ {
+ /*
+ * This code deals with returning xsd:any elements
+ */
+ DataObjectList& l = outputDataObject->getList("return");
+ Operation::ParameterType resultType = operation.getReturnType();
+ switch(resultType)
+ {
+ case Operation::BOOL:
+ {
+ l.append(*(bool*)operation.getReturnValue());
+ break;
+ }
+ case Operation::SHORT:
+ {
+ l.append(*(short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::INT:
+ {
+ l.append(*(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ l.append(*(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ l.append(*(short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::UINT:
+ {
+ l.append(*(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::ULONG:
+ {
+ l.append(*(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::FLOAT:
+ {
+ l.append(*(float*)operation.getReturnValue());
+ break;
+ }
+ case Operation::DOUBLE:
+ {
+ l.append(*(long double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONGDOUBLE:
+ {
+ l.append(*(long double*)operation.getReturnValue());
+ break;
+ }
+ case Operation::CHARS:
+ {
+ l.append(*(char**)operation.getReturnValue());
+ break;
+ }
+ case Operation::STRING:
+ {
+ l.append((*(string*)operation.getReturnValue()).c_str());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+ l.append(*(DataObjectPtr*)operation.getReturnValue());
+ break;
+ }
+ default:
+ {
+ string msg = "Unsupported parameter type";
+ msg += resultType;
+ throw msg.c_str();
+ }
+ }
+ }
+ else
+ {
+ LOGINFO(4, "No return values are defined");
+ }
+ }
+ else {
+
+ // Should only be one return value.. This goes through all return values
+ for(int i=0; i<pl.size(); i++)
+ {
+ const char* name = pl[i].getName();
+
+ Operation::ParameterType resultType = operation.getReturnType();
+ switch(resultType)
+ {
+ case Operation::BOOL:
+ {
+ outputDataObject->setBoolean(pl[i], *(bool*)operation.getReturnValue());
+ break;
+ }
+ case Operation::SHORT:
+ {
+ outputDataObject->setShort(pl[i], *(short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::INT:
+ {
+ outputDataObject->setInteger(pl[i], *(int*)operation.getReturnValue());
+ break;
+ }
+ case Operation::LONG:
+ {
+ outputDataObject->setInteger(pl[i], *(long*)operation.getReturnValue());
+ break;
+ }
+ case Operation::USHORT:
+ {
+ outputDataObject->setInteger(pl[i], *(unsigned short*)operation.getReturnValue());
+ break;
+ }
+ case Operation::UINT:
+ {
+ outputDataObject->setInteger(pl[i], *(unsigned int*)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:
+ {
+ 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());
+ break;
+ }
+ case Operation::DATAOBJECT:
+ {
+
+ 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:
+ {
+ string msg = "Unsupported parameter type";
+ msg += resultType;
+ throw msg.c_str();
+ }
+ }
+ }
+ }
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.h
new file mode 100644
index 0000000000..82ab4385f2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.h
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_ws_wsserviceproxy_h
+#define tuscany_sca_extension_ws_wsserviceproxy_h
+
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+#include "tuscany/sca/model/Component.h"
+#include "tuscany/sca/model/Reference.h"
+#include "tuscany/sca/model/Service.h"
+#include "tuscany/sca/model/WSDLOperation.h"
+#include "model/WSReferenceBinding.h"
+#include "commonj/sdo/SDO.h"
+
+using namespace tuscany::sca::model;
+
+using commonj::sdo::DataObjectPtr;
+using commonj::sdo::DataFactoryPtr;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ /**
+ * Holds a proxy for a given component and reference.
+ * The proxy which is held inside a ServiceProxy will be specific to the programming
+ * interface expected by the client. In this particular case the client is an Axis2
+ * Web service skeleton.
+ */
+ class WSServiceProxy : public ServiceProxy
+ {
+ public:
+ /**
+ * Create a new service proxy for a reference. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The reference on the source component.
+ * @param target The wrapper of the service which is wired to this reference.
+ */
+ WSServiceProxy(Reference* reference);
+
+ /**
+ * Create a new service proxy for a service. The proxy will contain a pointer to
+ * the target ServiceWrapper.
+ * @param reference The service on the target component.
+ * @param target The wrapper of the target service.
+ */
+ WSServiceProxy(Service* service);
+
+ /**
+ * Destructor.
+ */
+ virtual ~WSServiceProxy();
+
+ /**
+ * Invoke the specified operation
+ */
+ DataObjectPtr invoke(const WSDLOperation& wsdlOperation, DataObjectPtr inputDataObject);
+
+ private:
+
+ void setOutputData(Operation& operation, DataObjectPtr outputDataObject, DataFactoryPtr dataFactoryPtr);
+
+ /**
+ * The target service wrapper
+ */
+ ServiceWrapper* serviceWrapper;
+
+ };
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_wsserviceproxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.cpp
new file mode 100644
index 0000000000..23ecc133e8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.cpp
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/ws/model/WSReferenceBinding.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+#include "tuscany/sca/ws/WSServiceProxy.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+
+ // Constructor
+ WSReferenceBinding::WSReferenceBinding(Reference* reference, const string& uri, const string& endpoint, const string&version)
+ : ReferenceBinding(reference, uri), endpoint(endpoint), soapVersion(version)
+ {
+ parseEndpoint();
+ }
+
+ void WSReferenceBinding::parseEndpoint()
+ {
+ // Endpoint is of the form: <wsdl-namepace-uri>#wsdl.endpoint(<service-name>/<endpoint-name>)
+ string::size_type hash = endpoint.find("#");
+ if (hash != string::npos)
+ {
+ // Found a hash
+
+ // Namepace is the part before the #
+ wsdlNamespaceURL = endpoint.substr(0, hash);
+
+
+ if ( (hash+1) < endpoint.length())
+ {
+ // Check the next part is wsdl.endpoint(
+ int ending = hash+15;
+ string check = endpoint.substr(hash+1, 14);
+ if (check.compare("wsdl.endpoint(") == 0)
+ {
+ // Find the matching )
+ int endBracket = endpoint.find(")",ending);
+ if (endBracket-1 > ending+1)
+ {
+ string serviceAndEndpoint = endpoint.substr(ending, endBracket-ending);
+ // Look for a '/'
+ string::size_type slash = serviceAndEndpoint.find("/");
+ if (slash != string::npos)
+ {
+ serviceName = serviceAndEndpoint.substr(0, slash);
+
+ if ( (slash+1) < serviceAndEndpoint.length())
+ {
+ endpointName = serviceAndEndpoint.substr(slash+1);
+ }
+ else
+ {
+ endpointName = "";
+ }
+
+ }
+ else
+ {
+ // No '/' so all of it is the service name
+ serviceName = serviceAndEndpoint;
+ endpointName = "";
+
+ }
+ }
+ else
+ {
+ // Nothing between the ()
+ serviceName = "";
+ endpointName = "";
+ }
+ }
+ else
+ {
+ // not the correct characters after the #, ignore the rest
+ serviceName = "";
+ endpointName = "";
+ }
+
+ }
+ else
+ {
+ // Nothing after the hash
+ serviceName = "";
+ endpointName = "";
+ }
+ }
+ else
+ {
+ // No hash at all
+ wsdlNamespaceURL = endpoint;
+ serviceName = "";
+ endpointName = "";
+ }
+ }
+
+ // Destructor
+ WSReferenceBinding::~WSReferenceBinding()
+ {
+ }
+
+ void WSReferenceBinding::configure(ServiceBinding *binding)
+ {
+ targetServiceBinding = binding;
+
+ serviceProxy = new WSServiceProxy(getReference());
+ }
+
+ ServiceProxy* WSReferenceBinding::getServiceProxy()
+ {
+ return serviceProxy;
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.h
new file mode 100644
index 0000000000..90e28e326b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.h
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_ws_model_wsreferencebinding_h
+#define tuscany_sca_extension_ws_model_wsreferencebinding_h
+
+#include "tuscany/sca/model/ReferenceBinding.h"
+
+using namespace tuscany::sca::model;
+
+#include <string>
+using std::string;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace ws
+ {
+ /**
+ * Information about a web service binding for service or a reference.
+ */
+ class WSReferenceBinding : public ReferenceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ * @param endpoint The definition of the endpoint to which the entrypoint
+ * or external service is to be bound. This is of the form
+ * "namespace"#endpoint("service"/"endpoint")
+ */
+ WSReferenceBinding(Reference* reference, const string&uri, const string& endpoint, const string& version);
+
+ /**
+ * Destructor.
+ */
+ virtual ~WSReferenceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual string getType() { return "http://www.osoa.org/xmlns/sca/1.0#WebServiceBinding"; };
+
+ /**
+ * Configure this binding from a service binding.
+ */
+ virtual void configure(ServiceBinding* serviceBinding);
+
+ /**
+ * Create a proxy representing the reference to the
+ * client component.
+ */
+ virtual ServiceProxy* getServiceProxy();
+
+ /**
+ * Return the part of the endpoint definition describing the wsdl
+ * namespace.
+ * @return The wsdl namespace.
+ */
+ string getWSDLNamespaceURL() const { return wsdlNamespaceURL; };
+
+ /**
+ * Return the service part of the endpoint definition.
+ * @return The service to use.
+ */
+ string getServiceName() const { return serviceName; };
+
+ /**
+ * Return the endpoint name part of the endpoint definition.
+ * @return The endpoint name to use.
+ */
+ string getEndpointName() const { return endpointName; };
+
+ /**
+ * Return the SOAP version.
+ * @return The SOAP version to use.
+ */
+ string getSOAPVersion() const { return soapVersion; };
+
+ /**
+ * Returns the target service binding.
+ */
+ ServiceBinding* getTargetServiceBinding() const { return targetServiceBinding; };
+
+ private:
+
+ /**
+ * Parse the endpoint specification.
+ */
+ void parseEndpoint();
+
+ /**
+ * The full endpoint string.
+ */
+ string endpoint;
+
+ /**
+ * Namespace from the endpoint.
+ */
+ string wsdlNamespaceURL;
+
+ /**
+ * Service name from the endpoint.
+ */
+ string serviceName;
+
+ /**
+ * Endpoint name from the endpoint.
+ */
+ string endpointName;
+
+ /**
+ * SOAP version.
+ */
+ string soapVersion;
+
+ /**
+ * The proxy representing the reference to the client
+ * component.
+ */
+ ServiceProxy* serviceProxy;
+
+ /**
+ * The service binding of the target
+ */
+ ServiceBinding* targetServiceBinding;
+ };
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_model_wsreferencebinding_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploy.bat
new file mode 100644
index 0000000000..0722342b03
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploy.bat
@@ -0,0 +1,73 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set wsextdir=%extdir%\ws
+set svcextdir=%wsextdir%\service
+set svcsdir=%svcextdir%\services
+set srcdir=%rootdir%\runtime\extensions\ws\service\axis2c\src
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %wsextdir% mkdir %wsextdir%
+if not exist %svcextdir% mkdir %svcextdir%
+if not exist %svcextdir%\bin mkdir %svcextdir%\bin
+if not exist %svcextdir%\lib mkdir %svcextdir%\lib
+
+set libname=tuscany_sca_ws_service
+
+del %svcextdir%\bin\%libname%.*
+del %svcextdir%\lib\%libname%.*
+
+copy %inpath%\%libname%.lib %svcextdir%\lib
+copy %inpath%\%libname%.dll %svcextdir%\bin
+
+if exist %inpath%\%libname%.pdb copy %inpath%\%libname%.pdb %svcextdir%\bin
+
+if not exist %svcsdir% mkdir %svcsdir%
+if not exist %svcsdir%\tuscany mkdir %svcsdir%\tuscany
+
+copy %srcdir%\axis2.xml %svcextdir%
+copy %srcdir%\deploy.cmd %svcextdir%
+copy %srcdir%\services.xml %svcsdir%\tuscany
+copy %inpath%\%libname%.dll %svcsdir%\tuscany
+if exist %inpath%\%libname%.pdb copy %inpath%\%libname%.pdb %svcsdir%\tuscany
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploymodule.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploymodule.bat
new file mode 100644
index 0000000000..246728b6b2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/service/deploymodule.bat
@@ -0,0 +1,69 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if . == .%1 (
+echo sca root not specified
+goto usage
+)
+set rootdir=%1
+set deploydir=%rootdir%\deploy
+set extdir=%deploydir%\extensions
+set wsextdir=%extdir%\ws
+set svcextdir=%wsextdir%\service
+set modsdir=%svcextdir%\modules
+set srcdir=%rootdir%\runtime\extensions\ws\service\axis2c\src
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %extdir% mkdir %extdir%
+if not exist %wsextdir% mkdir %wsextdir%
+
+set libname=tuscany_sca_ws_dispatcher
+
+del %svcextdir%\bin\%libname%.*
+del %svcextdir%\lib\%libname%.*
+
+copy %inpath%\%libname%.lib %svcextdir%\lib
+copy %inpath%\%libname%.dll %svcextdir%\bin
+
+if exist %inpath%\%libname%.pdb copy %inpath%\%libname%.pdb %svcextdir%\bin
+
+
+if not exist %modsdir% mkdir %modsdir%
+if not exist %modsdir%\tuscany mkdir %modsdir%\tuscany
+
+copy %srcdir%\module.xml %modsdir%\tuscany
+copy %inpath%\%libname%.dll %modsdir%\tuscany
+if exist %inpath%\%libname%.pdb copy %inpath%\%libname%.pdb %modsdir%\tuscany
+
+goto end
+:usage
+echo Usage: deploy <sca-root> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/xsd/sca-binding-webservice.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/xsd/sca-binding-webservice.xsd
new file mode 100644
index 0000000000..2c1c2abbcc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/runtime/extensions/ws/xsd/sca-binding-webservice.xsd
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="binding.ws" type="sca:WebServiceBinding" substitutionGroup="sca:binding"/>
+ <complexType name="WebServiceBinding">
+ <complexContent>
+ <extension base="sca:Binding">
+ <sequence>
+ <element name="soapbinding" type="sca:SOAPBinding" minOccurs="0" maxOccurs="unbounded"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="endpoint" type="anyURI" use="optional" />
+ <attribute name="location" type="anyURI" use="optional" />
+ <attribute name="conformanceURIs" type="sca:ConformanceURIList" use="optional" />
+ <attribute name="interfaceMapping" type="string" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="SOAPBinding">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="optional" />
+ <attribute name="version" type="string" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <simpleType name="ConformanceURIList">
+ <list itemType="anyURI"/>
+ </simpleType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/AUTHORS b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/AUTHORS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/AUTHORS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/Makefile.am
new file mode 100644
index 0000000000..aa315d4f46
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/Makefile.am
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/BigBank/deploy
+SUBDIRS = bigbank.account bigbank.client bigbank.wsclient bigbank.phpwsclient
+EXTRA_DIST = *.composite README.html
+deploy_DATA = *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README
new file mode 100644
index 0000000000..dc919e1aed
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README
@@ -0,0 +1,30 @@
+Tuscany SCA for C++ Samples - BigBank Sample
+===============================================
+
+This sample implements the "Simplified BigBank" scenario. A whitepaper
+describing the scenario based on the SCA 0.9 Assembly specification can be
+found here. This sample uses multiple C++ components, calls out to an
+external Web Service via a reference, exposes the service as a Web Service
+and also provides a PHP based client.
+
+There are four sub projects in this workspace:
+ - bigbank.account
+ This contains the source code and SCDL artifacts for the SCA BigBank
+ composite implementing the account services.
+
+ - bigbank.client
+ A sample client which does a local call to the BigBank service.
+
+ - bigbank.wsclient
+ A sample Axis2 Web Service client which calls the BigBank Web service.
+
+ - bigbank.phpclient
+ A sample PHP client which calls the BigBank Web service and then
+ deconstructs and displays the result by using the SDO for PHP extension.
+
+Additionally, there is the bigbank.accountmanagement.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
+
+See the README.html file for instructions to build and run this sample
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README.html b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README.html
new file mode 100644
index 0000000000..597d05de67
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/README.html
@@ -0,0 +1,427 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("../../doc/css/maven-base.css");
+@import url("../../doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ Samples - BigBank Sample</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ Samples - BigBank Sample</H2>
+
+ <P>This sample implements the "Simplified BigBank" scenario. A whitepaper describing
+ the scenario based on the SCA 0.9 Assembly specification can be found
+ <A HREF="http://www.osoa.org/display/Main/SCA+-+Previously+Published+Specifications">here</A>.
+ This sample uses multiple C++ components, calls out to an external Web Service via a reference,
+ exposes the service as a Web Service and also provides a PHP based client.
+ </P>
+ <P>There are four sub projects in this workspace:</P>
+ <UL>
+ <LI>bigbank.account<BR/>
+ This contains the source code and SCDL artifacts for the SCA BigBank
+ composite implementing the account services.
+ </LI>
+ <LI>bigbank.client<BR/>
+ A sample client which does a local call to the BigBank service.
+ </LI>
+ <LI>bigbank.wsclient<BR/>
+ A sample Axis2 Web Service client which calls the BigBank Web service.
+ </LI>
+ <LI>bigbank.phpclient<BR/>
+ A sample PHP client which calls the BigBank Web service and then deconstructs
+ and displays the result by using the
+ <A HREF="http://www.osoa.org/display/PHP/SOA+PHP+Homepage">SDO for PHP extension</A>.
+ <P>This is a pair of very simple PHP scripts to demonstrate how the Accounts service
+ that the C++ Big Bank sample exposes can be used from within the PHP scripting
+ language.
+ </P>
+ <P>bigwelcome.php<BR/>
+ A bootstrap script that shows a form and allows the user to press a button
+ in order to invoke the bigaccount.php script
+ </P>
+ <P>bigaccount.php<BR/>
+ Makes a call to a locally installed BigBank Accounts service. The script
+ shows how to use PHP SDO and SOAP extensions to construct the call
+ and interpret the result.
+ </P>
+ </LI>
+ </UL>
+ <P>Additionally, there is the bigbank.accountmanagement.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#linuxbld">Building the C++ samples on Linux</A></LI>
+ <LI><A HREF="#linuxrun">Running the BigBank sample on Linux:</A></LI>
+ <UL>
+ <LI><A HREF="#linuxbasic">Running the basic client</A></LI>
+ <LI><A HREF="#linuxws">Running the Web Service client</A></LI>
+ <LI><A HREF="#linuxphp">Installing and running the PHP web client</A></LI>
+ </UL>
+ <LI><A HREF="#winbld">Building the BigBank sample on Windows</A></LI>
+ <LI><A HREF="#winrun">Running the BigBank sample on Windows:</A></LI>
+ <UL>
+ <LI><A HREF="#winbasic">Running the basic client</A></LI>
+ <LI><A HREF="#winws">Running the Web Service client</A></LI>
+ <LI><A HREF="#winphp">Installing and running the PHP web client</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="linuxbld"><H2>Building the C++ samples on Linux</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;/samples - go directly to <A HREF="#linuxrun">Running the samples on Linux</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>Build the C++ samples with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples</LI>
+ <LI>./configure --prefix=$TUSCANY_SCACPP --enable-static=no</LI>
+ <LI>make</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide the --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/BigBank</LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="linuxrun"><H2>Running the BigBank sample on Linux</H2></A>
+ <A NAME="linuxbasic"><H3>BigBank with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.92&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/BigBank/deploy/bigbank.client</LI>
+ <LI>./runclient.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="linuxws"><H3>BigBank with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/BigBank/deploy/bigbank.account
+ </LI>
+ <LI>./runwsserver.sh</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variable is required:
+ <UL>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/BigBank/deploy/bigbank.wsclient</LI>
+ <LI>./runwsclient.sh</LI>
+ </OL>
+ </LI>
+ </OL>
+ <A NAME="linuxphp"><H3>BigBank with PHP web client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/BigBank/deploy/bin
+ </LI>
+ <LI>./runwsserver.sh</LI>
+ </OL>
+ </LI>
+ <LI>To run the php scripts requires some configuration and setup of a php runtime with
+ the SDO and SimpleXML extensions enabled. The bits you will need are:
+ <UL>
+ <LI><A HREF="http://httpd.apache.org/">Apache web server</A> (tested with version 2.0.55)</LI>
+ <LI><A HREF="http://www.php.net/downloads.php">PHP 5</A> (tested with version 5.1.6)</LI>
+ <LI><A HREF="http://pecl.php.net/package/sdo">PHP SDO</A> (tested with version 1.0.3)</LI>
+ </UL>
+ <P>Follow
+ <A HREF="http://livedocs.phpdoc.info/index.php?l=en&q=ref.sdo">these instructions</A> to
+ install SDO and DAS.
+ </P>
+ </LI>
+ <LI>You need to configure Apache to run PHP of course. This is well documented but this
+ is what to put at the end of httpd.conf:
+ <PRE># PHP5 Support
+LoadModule php5_module "/home/php/php5.1.6/php5apache2.so"
+AddType application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "/home/php/php5.1.6"</PRE>
+ </LI>
+ <LI>Copy the &lt;tuscany_sca_install_dir&gt;/samples/BigBank/bigbank.phpwsclient
+ directory to your Apache document root directory (by default this is named 'htdocs').
+ </LI>
+ <LI>Finally, start your Apache web server.
+ </LI>
+ <LI>Run the PHP web client by pointing your browser at
+ <A HREF="http://localhost/bigbank.phpwsclient/welcome.php">http://localhost/bigbank.phpwsclient/welcome.php</A>.
+ You should now be able to press the "GetAccount" button and see the values
+ returned from the BigBank SCA application.
+ </LI>
+
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winbld"><H2>Building the BigBank sample on Windows</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;\samples - go directly to <A HREF="#winrun">Running the samples on Windows</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>You must have set up the environment for Microsoft Visual C++ tools.
+ The build command will call vcvars32 to set the environment. Ensure the
+ directory containing this is on your path. This will be where you
+ installed the compiler.
+ </LI>
+ <LI>Build the source, either via the Visual Studio 6 or 7 projects under
+ &lt;tuscany_sca_install_dir&gt;\samples\ides or via the command-line build file
+ found at &lt;tuscany_sca_install_dir&gt;\samples\ides\devstudio6\projects\BigBank\build.cmd
+ which will build and deploy the samples.
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winrun"><H2>Running the BigBank sample on Windows</H2></A>
+ <A NAME="winbasic"><H3>BigBank with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\BigBank\deploy\bigbank.client</LI>
+ <LI>runclient.bat</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="winws"><H3>BigBank with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\BigBank\deploy\bigbank.account
+ </LI>
+ <LI>runwsserver.bat</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variable is required:
+ <UL>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\BigBank\deploy\bigbank.wsclient</LI>
+ <LI>runwsclient.bat</LI>
+ </OL>
+ </LI>
+ </OL>
+ <A NAME="winphp"><H3>BigBank with PHP web client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\BigBank\deploy\bigbank.account
+ </LI>
+ <LI>runwsserver.bat</LI>
+ </OL>
+ </LI>
+ <LI>To run the php scripts requires some configuration and setup of a php runtime with
+ the SDO and SimpleXML extensions enabled. The bits you will need are:
+ <UL>
+ <LI><A HREF="http://httpd.apache.org/">Apache web server</A> (tested with version 2.0.55)</LI>
+ <LI><A HREF="http://www.php.net/downloads.php">PHP 5</A> (tested with version 5.1.6)</LI>
+ <LI><A HREF="http://pecl.php.net/package/sdo">PHP SDO</A> (tested with version 1.0.3)</LI>
+ </UL>
+ <P>You can get Windows binary builds from
+ <A HREF="http://www.php.net/downloads.php">http://www.php.net/downloads.php</A>.
+ For SDO you need two dlls as follows:
+ </P>
+ <UL>
+ <LI><A HREF="http://pecl4win.php.net/ext.php/php_sdo.dll">php_sdo.dll</A></LI>
+ <LI><A HREF="http://pecl4win.php.net/ext.php/php_sdo_das_xml.dll">php_sdo_das_xml.dll</A></LI>
+ </UL>
+ <P>Copy these to the php5.1.6\ext dir ( php_soap.dll is already there) and add the
+ following to php.ini file (having already renamed php.ini-recommended to php.ini
+ of course)
+ <PRE>extension=php_soap.dll
+extension=php_sdo.dll
+extension=php_sdo_das_xml.dll</PRE>
+ I also changed the extension_dir directive to point to my extensions directory:
+ <PRE>extension_dir="C:\php5.1.6\ext"</PRE>
+ </P>
+ <P>Asking PHP to list what modules are active gives the following:
+ <PRE>C:\php5.1.6>php -m
+[PHP Modules]
+bcmath
+calendar
+com_dotnet
+ctype
+date
+dom
+ftp
+hash
+iconv
+libxml
+odbc
+pcre
+Reflection
+sdo
+sdo_das_xml
+session
+SimpleXML
+soap
+SPL
+standard
+tokenizer
+wddx
+xml
+xmlreader
+xmlwriter
+zlib
+
+[Zend Modules]</PRE>
+ Of particular relevance to these scripts note that soap, sdo and sdo_das_xml are active.
+ </P>
+ </LI>
+ <LI>You need to configure Apache to run PHP of course. This is well documented but this
+ is what to put at the end of httpd.conf:
+ <PRE># PHP5 Support
+LoadModule php5_module "C:\php5.1.6\php5apache2.dll"
+AddType application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "C:\php5.1.6"</PRE>
+ </LI>
+ <LI>Copy the &lt;tuscany_sca_install_dir&gt;\samples\BigBank\bigbank.phpwsclient
+ directory to your Apache document root directory (by default this is named 'htdocs').
+ </LI>
+ <LI>Finally, start your Apache web server.
+ </LI>
+ <LI>Run the PHP web client by pointing your browser at
+ <A HREF="http://localhost/bigbank.phpwsclient/welcome.php">http://localhost/bigbank.phpwsclient/welcome.php</A>.
+ You should now be able to press the "GetAccount" button and see the values
+ returned from the BigBank SCA application.
+ </LI>
+ </OL>
+ </DIV>
+
+
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataService.h
new file mode 100644
index 0000000000..04000698e7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataService.h
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "commonj/sdo/SDO.h"
+
+#include <string>
+using std::string;
+
+namespace services
+{
+ namespace accountdata
+ {
+
+ /**
+ * AccountDataService business interface
+ */
+ class AccountDataService
+ {
+ public:
+
+ // CheckingAccount is a data object containing
+ // string accountNumber
+ // float balance
+
+ virtual commonj::sdo::DataObjectPtr /* CheckingAccount*/ getCheckingAccount(
+ const string id) = 0;
+
+ // SavingsAccount is a data object containing
+ // string accountNumber
+ // float balance
+
+ virtual commonj::sdo::DataObjectPtr /* SavingsAccount */ getSavingsAccount(
+ const string id) = 0;
+
+ // StockAccount is a data object containing
+ // string accountNumber
+ // string symbol
+ // int quantity
+
+ virtual commonj::sdo::DataObjectPtr /* StockAccount */ getStockAccount (
+ const string id) = 0;
+
+ };
+
+ } // End accountdata
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.componentType
new file mode 100644
index 0000000000..b1cab9e1f9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.componentType
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="AccountDataService">
+ <interface.cpp header="AccountDataService.h"/>
+ </service>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.cpp
new file mode 100644
index 0000000000..3f06809919
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.cpp
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "commonj/sdo/SDO.h"
+#include "osoa/sca/sca.h"
+
+#include "AccountDataServiceImpl.h"
+
+using namespace commonj::sdo;
+using namespace osoa::sca;
+
+/**
+ * AccountDataServiceImpl component implementation
+ */
+
+namespace services
+{
+ namespace accountdata
+ {
+
+ DataObjectPtr /* CheckingAccount*/
+ AccountDataServiceImpl::getCheckingAccount(const string id)
+ {
+ try {
+
+ DataFactoryPtr factory = ComponentContext::getCurrent().getDataFactory();
+
+ DataObjectPtr newaccount =
+ factory->create("http://www.bigbank.com/AccountService","CheckingAccount");
+
+ char* name = new char[id.size() + 10];
+ strcpy(name,id.c_str());
+ strcat(name,"_CHA12345");
+
+ newaccount->setCString("accountNumber",name);
+
+ delete name;
+
+ newaccount->setFloat("balance",1500.0f);
+
+ return newaccount;
+
+ }
+ catch (SDORuntimeException e)
+ {
+ return 0;
+ }
+ }
+
+
+
+ DataObjectPtr /* SavingsAccount */
+ AccountDataServiceImpl::getSavingsAccount(const string id)
+ {
+ try {
+
+ DataFactoryPtr factory = ComponentContext::getCurrent().getDataFactory();
+
+ DataObjectPtr newaccount =
+ factory->create("http://www.bigbank.com/AccountService","SavingsAccount");
+
+ char* name = new char[id.size() + 10];
+ strcpy(name,id.c_str());
+ strcat(name,"_SAA12345");
+
+ newaccount->setCString("accountNumber",name);
+
+ delete name;
+
+ newaccount->setFloat("balance",1500.0f);
+
+ return newaccount;
+
+ }
+ catch (SDORuntimeException e)
+ {
+ return 0;
+ }
+ }
+
+
+ DataObjectPtr /* StockAccount */
+ AccountDataServiceImpl::getStockAccount (const string id)
+ {
+ try {
+
+ DataFactoryPtr factory = ComponentContext::getCurrent().getDataFactory();
+
+ DataObjectPtr newaccount =
+ factory->create("http://www.bigbank.com/AccountService","StockAccount");
+
+ char* name = new char[id.size() + 10];
+ strcpy(name,id.c_str());
+ strcat(name,"_STA12345");
+
+ newaccount->setCString("accountNumber",name);
+
+ delete name;
+
+ newaccount->setCString("symbol","IBM");
+
+ newaccount->setInteger("quantity",100);
+
+ return newaccount;
+
+ }
+ catch (SDORuntimeException e)
+ {
+ return 0;
+ }
+ }
+
+ } // End accountdata
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.h
new file mode 100644
index 0000000000..373da4ba95
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.h
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "AccountDataService.h"
+
+namespace services
+{
+ namespace accountdata
+ {
+
+ /**
+ * AccountDataServiceImpl component implementation class
+ */
+ class AccountDataServiceImpl : public AccountDataService
+ {
+ public:
+
+ // CheckingAccount is a data object containing
+ // string accountNumber
+ // float balance
+
+ virtual DataObjectPtr /* CheckingAccount*/ getCheckingAccount(
+ const string id);
+
+ // SavingsAccount is a data object containing
+ // string accountNumber
+ // float balance
+
+ virtual DataObjectPtr /* SavingsAccount */ getSavingsAccount(
+ const string id);
+
+ // StockAccount is a data object containing
+ // string accountNumber
+ // string symbol
+ // int quantity
+
+ virtual DataObjectPtr /* StockAccount */ getStockAccount (
+ const string id);
+
+ };
+
+ } // End accountdata
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.h
new file mode 100644
index 0000000000..b8e462fb72
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.h
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "commonj/sdo/SDO.h"
+
+#include <string>
+using std::string;
+
+namespace services
+{
+ namespace account
+ {
+
+ /**
+ * AccountService business interface
+ */
+ class AccountService
+ {
+ public:
+
+ // The account report data object has one many-valued
+ // property "accountSummaries", containing the following
+ // properties:
+ // string accountNumber
+ // string accountType
+ // float balance.
+
+ virtual commonj::sdo::DataObjectPtr /*AccountReport*/
+ getAccountReport(const string customerID) = 0;
+
+ };
+
+ } // End account
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.wsdl
new file mode 100644
index 0000000000..cbfe180692
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountService.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://www.bigbank.com/AccountService"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.bigbank.com/AccountService"
+ name="AccountService">
+
+ <wsdl:types>
+ <xsd:schema
+ targetNamespace="http://www.bigbank.com/AccountService"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="getAccountReport">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="customerID"
+ type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="getAccountReportResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="result"
+ type="tns:AccountReport" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="AccountReport">
+ <xsd:sequence>
+ <xsd:element name="checking"
+ type="tns:CheckingAccount" maxOccurs="unbounded" />
+ <xsd:element name="savings"
+ type="tns:SavingsAccount" maxOccurs="unbounded" />
+ <xsd:element name="stocks" type="tns:StockAccount"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="StockAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="symbol" type="xsd:string" />
+ <xsd:element name="quantity" type="xsd:integer" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CheckingAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="SavingsAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="getAccountReportRequest">
+ <wsdl:part element="tns:getAccountReport"
+ name="getAccountReportRequest" />
+ </wsdl:message>
+
+ <wsdl:message name="getAccountReportResponse">
+ <wsdl:part element="tns:getAccountReportResponse"
+ name="getAccountReportResponse" />
+ </wsdl:message>
+
+ <wsdl:portType name="AccountService">
+ <wsdl:operation name="getAccountReport">
+ <wsdl:input message="tns:getAccountReportRequest" />
+ <wsdl:output message="tns:getAccountReportResponse" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="AccountServiceSOAP" type="tns:AccountService">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getAccountReport">
+ <soap:operation
+ soapAction="http://www.bigbank.com/AccountService/getAccountReport" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="AccountService">
+ <wsdl:port binding="tns:AccountServiceSOAP"
+ name="AccountServiceSOAP">
+ <soap:address
+ location="http://localhost:9090/axis2/services/AccountService" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.componentType
new file mode 100644
index 0000000000..b65fa1dc18
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.componentType
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="AccountService">
+ <interface.cpp header="AccountService.h"/>
+ </service>
+
+ <reference name="accountDataService">
+ <interface.cpp header="AccountDataService.h"/>
+ </reference>
+
+ <reference name="stockQuoteService">
+ <interface.cpp header="StockQuoteService.h"/>
+ </reference>
+
+ <property name="currency" type="xs:string">USD</property>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.cpp
new file mode 100644
index 0000000000..fd18119bad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.cpp
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "osoa/sca/sca.h"
+
+#include "AccountServiceImpl.h"
+#include "StockQuoteService.h"
+#include "AccountDataService.h"
+
+using namespace osoa::sca;
+using namespace services::accountdata;
+using namespace services::stockquote;
+
+/**
+ * AccountServiceImpl component implementation
+ */
+namespace services
+{
+ namespace account
+ {
+
+ DataObjectPtr /*AccountReport**/
+ AccountServiceImpl::getAccountReport(const string customerID)
+ {
+ ComponentContext theContext = ComponentContext::getCurrent();
+
+ commonj::sdo::DataFactoryPtr factory = theContext.getDataFactory();
+
+ commonj::sdo::DataObjectPtr newReport =
+ factory->create("http://www.bigbank.com/AccountService","AccountReport");
+
+ // Get the accountDataService service
+ AccountDataService *dataService =
+ (AccountDataService*)theContext.getService("accountDataService");
+
+ // would be better to return a list of accounts - this only
+ // gets the first of each.
+
+ commonj::sdo::DataObjectPtr checking =
+ dataService->getCheckingAccount(customerID);
+
+ if (checking != 0)
+ {
+ commonj::sdo::DataObjectList& dl = newReport->getList("checking");
+ checking->setFloat("balance",
+ fromUSDollarToCurrency(checking->getFloat("balance")));
+ dl.append(checking);
+ }
+
+ commonj::sdo::DataObjectPtr savings = dataService->getSavingsAccount(customerID);
+
+ if (savings != 0)
+ {
+ commonj::sdo::DataObjectList& dl = newReport->getList("savings");
+ savings->setFloat("balance",
+ fromUSDollarToCurrency(savings->getFloat("balance")));
+ dl.append(savings);
+ }
+
+ // Get the stockQuoteService service
+ StockQuoteService* stockService =
+ (StockQuoteService*)theContext.getService("stockQuoteService");
+
+ commonj::sdo::DataObjectPtr stocks = dataService->getStockAccount(customerID);
+
+ if (stocks != 0)
+ {
+ commonj::sdo::DataObjectList& dl = newReport->getList("stocks");
+
+ float value = 10.0f;
+ try {
+ value = stockService->getQuote(
+ stocks->getCString("symbol"));
+ }
+ catch (ServiceRuntimeException& e)
+ {
+ std::cout << "Fault from stock quote service" << e << std::endl;
+ }
+ stocks->setFloat("balance",
+ fromUSDollarToCurrency(stocks->getInteger("quantity") *
+ value));
+ dl.append(stocks);
+ }
+
+ return newReport;
+ }
+
+ float AccountServiceImpl::fromUSDollarToCurrency(float value)
+ {
+ // Get the "currency" property
+ ComponentContext myContext = ComponentContext::getCurrent();
+
+ commonj::sdo::DataObjectInstance properties = myContext.getProperties();
+ if (properties)
+ {
+ const char* currency = properties->getCString("currency");
+ if (currency != 0)
+ {
+ std::cout << "Currency is : " << currency << std::endl;
+ if (!strcmp(currency,"USD")) return value;
+ if (!strcmp(currency,"EURO")) return 0.8f * value;
+ }
+ }
+ return 0.0f;
+ }
+
+ } // End account
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.h
new file mode 100644
index 0000000000..70dfc17b19
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/AccountServiceImpl.h
@@ -0,0 +1,44 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "AccountService.h"
+
+
+namespace services
+{
+ namespace account
+ {
+
+ /**
+ * AccountServiceImpl component implementation class
+ */
+ class AccountServiceImpl: public AccountService
+ {
+ public:
+
+ virtual DataObjectPtr /*AccountReport*/
+ getAccountReport(const string customerID);
+
+ private:
+
+ float fromUSDollarToCurrency(float value);
+
+ };
+
+ } // End account
+} // End services
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/Makefile.am
new file mode 100644
index 0000000000..4e4d69e2d7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/Makefile.am
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/BigBank/deploy
+compositedir=$(deploydir)/bigbank.account
+
+BUILT_SOURCES = scagen
+
+noinst_HEADERS = *.h
+
+composite_SCRIPTS = runwsserver.sh
+
+scagen:
+ java -jar $(TUSCANY_SCACPP)/bin/scagen.jar -dir . -output .
+
+composite_LTLIBRARIES = libAccount.la
+composite_DATA = *.composite *.componentType *.wsdl *.xsd
+EXTRA_DIST = *.composite *.componentType *.wsdl *.xsd runwsserver.sh
+
+dist_libAccount_la_SOURCES = \
+AccountDataServiceImpl.cpp \
+AccountServiceImpl.cpp \
+StockQuoteServiceImpl.cpp
+
+nodist_libAccount_la_SOURCES = \
+AccountDataServiceImpl_AccountDataService_Proxy.cpp \
+AccountDataServiceImpl_AccountDataService_Wrapper.cpp \
+AccountServiceImpl_accountDataService_Proxy.cpp \
+AccountServiceImpl_AccountService_Proxy.cpp \
+AccountServiceImpl_AccountService_Wrapper.cpp \
+AccountServiceImpl_stockQuoteService_Proxy.cpp \
+StockQuoteServiceImpl_StockQuoteService_Proxy.cpp \
+StockQuoteServiceImpl_StockQuoteService_Wrapper.cpp \
+StockQuoteServiceImpl_webService_Proxy.cpp
+
+libAccount_la_LIBADD = \
+-L${TUSCANY_SCACPP}/lib \
+ -ltuscany_sca \
+-L${TUSCANY_SCACPP}/extensions/cpp/lib \
+ -ltuscany_sca_cpp
+
+INCLUDES = \
+ -I$(TUSCANY_SCACPP)/extensions/cpp/include \
+ -I$(TUSCANY_SCACPP)/include \
+ -I${TUSCANY_SDOCPP}/include
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteService.h
new file mode 100644
index 0000000000..d67998059a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteService.h
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <string>
+using std::string;
+
+namespace services
+{
+ namespace stockquote
+ {
+ /**
+ * StockQuoteService business interface
+ */
+ class StockQuoteService
+ {
+ public:
+
+ virtual float getQuote(const string symbol) = 0;
+
+ };
+
+ } // End stockquote
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.componentType
new file mode 100644
index 0000000000..6ac2b77255
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.componentType
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="StockQuoteService">
+ <interface.cpp header="StockQuoteService.h"/>
+ </service>
+
+ <reference name="webService">
+ <interface.cpp header="StockQuoteWebService.h"/>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.cpp
new file mode 100644
index 0000000000..e78769f50e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.cpp
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "StockQuoteServiceImpl.h"
+#include "StockQuoteWebService.h"
+
+#include "osoa/sca/sca.h"
+#include "commonj/sdo/SDO.h"
+
+using namespace osoa::sca;
+using namespace commonj::sdo;
+
+/**
+ * StockQuoteServiceImpl component implementation
+ */
+namespace services {
+ namespace stockquote {
+
+ // Map the format returned by the StockQuote Web service to
+ // the format expected in the BigBank application
+ float StockQuoteServiceImpl::getQuote(const string symbol)
+ {
+ ComponentContext myContext = ComponentContext::getCurrent();
+
+ // Get the StockQuote Web service
+ StockQuoteWebService* webService =
+ (StockQuoteWebService*)myContext.getService("webService");
+
+ // Invoke the service
+ const string result = webService->GetQuote(symbol);
+
+ float stockPrice = 0.0f;
+
+ // Get the stock price out of the document returned by the StockQuote
+ // Web service
+ try
+ {
+ XMLHelperPtr xmlHelper = HelperProvider::getXMLHelper(myContext.getDataFactory());
+ XMLDocumentPtr stockDoc = xmlHelper->load(result);
+ if (stockDoc->getRootDataObject())
+ {
+ stockPrice=stockDoc->getRootDataObject()->getFloat("Stock.0/Last");
+ }
+ }
+ catch (SDORuntimeException e)
+ {
+ std::cout << e << std::endl;
+ return 0.0f;
+ }
+ return stockPrice;
+ }
+
+ } // End stockquote
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.h
new file mode 100644
index 0000000000..cccf161454
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.h
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "StockQuoteService.h"
+
+namespace services
+{
+ namespace stockquote
+ {
+
+ /**
+ * StockQuoteServiceImpl component implementation class
+ */
+ class StockQuoteServiceImpl : public StockQuoteService
+ {
+ public:
+
+ virtual float getQuote(const string symbol);
+ };
+
+ } // End stockquote
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteTypes.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteTypes.xsd
new file mode 100644
index 0000000000..5bce3a63dc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteTypes.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="StockQuotes" type="tStockQuotes"/>
+ <xs:complexType name="tStockQuotes">
+ <xs:sequence>
+ <xs:element name="Stock" type="tStock" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##any" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:complexType name="tStock">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Symbol" type="xs:string"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Last" type="xs:float"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##any" processContents="lax"/>
+ </xs:complexType>
+</xs:schema> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.h
new file mode 100644
index 0000000000..9bee445c8d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.h
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <string>
+using std::string;
+
+namespace services
+{
+ namespace stockquote
+ {
+
+ /**
+ * StockQuoteWebService business interface
+ *
+ * This is the interface of the Web service used to get
+ * live stock quotes.
+ */
+ class StockQuoteWebService
+ {
+ public:
+
+ virtual const string GetQuote(const string symbol) = 0;
+
+ };
+
+ } // End stockquote
+} // End services
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.wsdl
new file mode 100644
index 0000000000..c14f97c87b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/StockQuoteWebService.wsdl
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:s="http://www.w3.org/2001/XMLSchema"
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:tns="http://www.webserviceX.NET/"
+ xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
+ xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+ targetNamespace="http://www.webserviceX.NET/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <s:schema elementFormDefault="qualified"
+ targetNamespace="http://www.webserviceX.NET/">
+ <s:element name="GetQuote">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="symbol" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+
+ </s:element>
+ <s:element name="GetQuoteResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="GetQuoteResult" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="string" nillable="true" type="s:string" />
+
+ </s:schema>
+ </wsdl:types>
+ <wsdl:message name="GetQuoteSoapIn">
+ <wsdl:part name="parameters" element="tns:GetQuote" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteSoapOut">
+ <wsdl:part name="parameters" element="tns:GetQuoteResponse" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpGetIn">
+
+ <wsdl:part name="symbol" type="s:string" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpGetOut">
+ <wsdl:part name="Body" element="tns:string" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpPostIn">
+ <wsdl:part name="symbol" type="s:string" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpPostOut">
+
+ <wsdl:part name="Body" element="tns:string" />
+ </wsdl:message>
+ <wsdl:portType name="StockQuoteSoap">
+ <wsdl:operation name="GetQuote">
+ <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
+ Get Stock quote for a company Symbol
+ </documentation>
+ <wsdl:input message="tns:GetQuoteSoapIn" />
+ <wsdl:output message="tns:GetQuoteSoapOut" />
+ </wsdl:operation>
+
+ </wsdl:portType>
+ <wsdl:portType name="StockQuoteHttpGet">
+ <wsdl:operation name="GetQuote">
+ <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
+ Get Stock quote for a company Symbol
+ </documentation>
+ <wsdl:input message="tns:GetQuoteHttpGetIn" />
+ <wsdl:output message="tns:GetQuoteHttpGetOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:portType name="StockQuoteHttpPost">
+ <wsdl:operation name="GetQuote">
+ <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
+ Get Stock quote for a company Symbol
+ </documentation>
+ <wsdl:input message="tns:GetQuoteHttpPostIn" />
+ <wsdl:output message="tns:GetQuoteHttpPostOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="StockQuoteSoap" type="tns:StockQuoteSoap">
+
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+ style="document" />
+ <wsdl:operation name="GetQuote">
+ <soap:operation
+ soapAction="http://www.webserviceX.NET/GetQuote" style="document" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="StockQuoteHttpGet"
+ type="tns:StockQuoteHttpGet">
+ <http:binding verb="GET" />
+ <wsdl:operation name="GetQuote">
+ <http:operation location="/GetQuote" />
+ <wsdl:input>
+ <http:urlEncoded />
+ </wsdl:input>
+
+ <wsdl:output>
+ <mime:mimeXml part="Body" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="StockQuoteHttpPost"
+ type="tns:StockQuoteHttpPost">
+ <http:binding verb="POST" />
+ <wsdl:operation name="GetQuote">
+ <http:operation location="/GetQuote" />
+
+ <wsdl:input>
+ <mime:content type="application/x-www-form-urlencoded" />
+ </wsdl:input>
+ <wsdl:output>
+ <mime:mimeXml part="Body" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="StockQuote">
+
+ <wsdl:port name="StockQuoteSoap" binding="tns:StockQuoteSoap">
+ <soap:address
+ location="http://www.webservicex.net/stockquote.asmx" />
+ </wsdl:port>
+ <wsdl:port name="StockQuoteHttpGet"
+ binding="tns:StockQuoteHttpGet">
+ <http:address
+ location="http://www.webservicex.net/stockquote.asmx" />
+ </wsdl:port>
+ <wsdl:port name="StockQuoteHttpPost"
+ binding="tns:StockQuoteHttpPost">
+ <http:address
+ location="http://www.webservicex.net/stockquote.asmx" />
+ </wsdl:port>
+
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/bigbank.account.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/bigbank.account.composite
new file mode 100644
index 0000000000..7173d584d2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/bigbank.account.composite
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="bigbank.account">
+
+ <service name="AccountService">
+ <interface.wsdl interface="http://www.bigbank.com/AccountService#wsdl.interface(AccountService)"/>
+ <!-- The endpoint is optional -->
+ <!-- <binding.ws endpoint="http://www.bigbank.com/AccountService#wsdl.endpoint(AccountService/AccountServiceSOAP)"/> -->
+ <binding.ws/>
+ <reference>AccountServiceComponent</reference>
+ </service>
+
+ <component name="AccountServiceComponent">
+ <implementation.cpp library="Account" header="AccountServiceImpl.h"/>
+ <reference name="accountDataService">AccountDataServiceComponent</reference>
+ <reference name="stockQuoteService">StockQuoteServiceComponent</reference>
+ <property name="currency">EURO</property>
+ </component>
+
+ <component name="AccountDataServiceComponent">
+ <implementation.cpp library="Account" header="AccountDataServiceImpl.h"/>
+ </component>
+
+ <component name="StockQuoteServiceComponent">
+ <implementation.cpp library="Account" header="StockQuoteServiceImpl.h"/>
+ <reference name="webService">StockQuoteWebService</reference>
+ </component>
+
+ <reference name="StockQuoteWebService">
+ <interface.wsdl interface="http://www.webserviceX.NET/#wsdl.interface(StockQuoteSoap)"/>
+ <binding.ws endpoint="http://www.webserviceX.NET/#wsdl.endpoint(StockQuote/StockQuoteSoap)"/>
+ </reference>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.bat
new file mode 100644
index 0000000000..f95d5136ef
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.bat
@@ -0,0 +1,51 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo Using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo Using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%
+
+set APFULLDIR=%~d0%~p0
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+rem Run the client
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %AXIS2C_HOME%\bin
+.\axis2_http_server.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.sh
new file mode 100755
index 0000000000..eb20a3d670
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.account/runwsserver.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/extensions/cpp/lib:$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+cd $AXIS2C_HOME/bin
+./axis2_http_server
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.accountmanagement.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.accountmanagement.composite
new file mode 100644
index 0000000000..4bf2c35008
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.accountmanagement.composite
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="bigbank.accountmanagement">
+
+ <component name="bigbank.AccountManagementComponent">
+ <implementation.composite name="bigbank.account"/>
+ </component>
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/AccountClient.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/AccountClient.cpp
new file mode 100644
index 0000000000..a0b9de5f76
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/AccountClient.cpp
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "AccountService.h"
+#include "osoa/sca/sca.h"
+#include <iostream>
+#include <stdlib.h>
+
+using namespace osoa::sca;
+using namespace std;
+using namespace services::account;
+using namespace commonj::sdo;
+
+int main(int argc, char* argv[])
+{
+
+ if (argc != 2)
+ {
+ cout << "account_client: Argument must be the name of the account" << endl;
+ return 0;
+ }
+ try
+ {
+
+ // Locate a service
+ CompositeContext myContext = CompositeContext::getCurrent();
+ AccountService *accountService =
+ (AccountService*) myContext.locateService("AccountServiceComponent");
+ if (accountService == 0)
+ {
+ cout << "account_client: Unable to find Account service" << endl;
+ }
+ else
+ {
+ try
+ {
+ // exercise the account service
+
+ DataObjectPtr report =
+ accountService->getAccountReport(argv[1]);
+
+ XMLHelperPtr xmlHelper = HelperProvider::getXMLHelper(myContext.getDataFactory());
+ char* doc = xmlHelper->save(report, report->getType().getURI(), report->getType().getName());
+ cout << "XML: " << doc <<endl;
+
+ if (report != 0)
+ {
+ int i;
+ char balanceStr[20];
+ float balance;
+
+ cout << "My Account Report" << endl;
+ cout << "=================" << endl;
+
+ DataObjectList& stocks = report->getList("stocks");
+
+ for (i=0;i< stocks.size() ;i++)
+ {
+ cout << "Stock Account " << stocks[i]->getCString("accountNumber") << endl;
+ cout << "Stock Symbol : " << stocks[i]->getCString("symbol") << endl;
+ cout << " Holding : " << stocks[i]->getCString("quantity") << endl;
+ balance = stocks[i]->getFloat("balance");
+ sprintf(balanceStr,"%.2f",balance);
+ cout << " Value : " << balanceStr << endl << endl;
+ }
+
+ DataObjectList& checking = report->getList("checking");
+
+ for (i=0;i< checking.size() ;i++)
+ {
+ cout << "Checking Account " << checking[i]->getCString("accountNumber") << endl;
+ balance = checking[i]->getFloat("balance");
+ sprintf(balanceStr,"%.2f",balance);
+ cout << " Balance : " << balanceStr << endl << endl;
+ }
+
+ DataObjectList& savings = report->getList("savings");
+
+ for (i=0;i< savings.size() ;i++)
+ {
+ cout << "Savings Account " << savings[i]->getCString("accountNumber") << endl;
+ balance = savings[i]->getFloat("balance");
+ sprintf(balanceStr,"%.2f",balance);
+ cout << " Balance : " << balanceStr << endl << endl;
+ }
+
+ cout << endl;
+ }
+ }
+ catch (SDORuntimeException& e)
+ {
+ cout << e << endl;
+ }
+ catch (char* x)
+ {
+ cout << "account_client: exception caught: " << x << endl;
+ }
+ }
+
+ }
+ catch (ServiceRuntimeException& ex)
+ {
+ cout << ex << endl;
+ }
+ return 0;
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/Makefile.am
new file mode 100644
index 0000000000..3ca7379572
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/Makefile.am
@@ -0,0 +1,49 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/BigBank/deploy
+clientdir=$(deploydir)/bigbank.client
+
+client_PROGRAMS = account_client
+client_SCRIPTS = runclient.sh
+EXTRA_DIST = runclient.sh
+
+AM_CPPFLAGS = $(CPPFLAGS)
+account_client_SOURCES = AccountClient.cpp
+
+account_client_LDADD = -L${TUSCANY_SCACPP}/lib -ltuscany_sca \
+ -L${TUSCANY_SCACPP}/extensions/cpp/lib -ltuscany_sca_cpp \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -lwoden \
+ -lwoden_wsdl \
+ -laxis2_xml_schema \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+
+INCLUDES = -I$(TUSCANY_SCACPP)/extensions/cpp/include \
+ -I${TUSCANY_SCACPP}/include \
+ -I${TUSCANY_SDOCPP}/include \
+ -I../bigbank.account
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.bat
new file mode 100644
index 0000000000..e8907e9302
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.bat
@@ -0,0 +1,50 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo Using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo Using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%
+
+set APFULLDIR=%~d0%~p0
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+rem Run the client
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+.\AccountClient.exe 1234
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.sh
new file mode 100755
index 0000000000..54f3c27578
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.client/runclient.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/extensions/cpp/lib:$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+./account_client 1234
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/AccountService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/AccountService.wsdl
new file mode 100644
index 0000000000..cbfe180692
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/AccountService.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://www.bigbank.com/AccountService"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.bigbank.com/AccountService"
+ name="AccountService">
+
+ <wsdl:types>
+ <xsd:schema
+ targetNamespace="http://www.bigbank.com/AccountService"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="getAccountReport">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="customerID"
+ type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="getAccountReportResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="result"
+ type="tns:AccountReport" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="AccountReport">
+ <xsd:sequence>
+ <xsd:element name="checking"
+ type="tns:CheckingAccount" maxOccurs="unbounded" />
+ <xsd:element name="savings"
+ type="tns:SavingsAccount" maxOccurs="unbounded" />
+ <xsd:element name="stocks" type="tns:StockAccount"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="StockAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="symbol" type="xsd:string" />
+ <xsd:element name="quantity" type="xsd:integer" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CheckingAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="SavingsAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="getAccountReportRequest">
+ <wsdl:part element="tns:getAccountReport"
+ name="getAccountReportRequest" />
+ </wsdl:message>
+
+ <wsdl:message name="getAccountReportResponse">
+ <wsdl:part element="tns:getAccountReportResponse"
+ name="getAccountReportResponse" />
+ </wsdl:message>
+
+ <wsdl:portType name="AccountService">
+ <wsdl:operation name="getAccountReport">
+ <wsdl:input message="tns:getAccountReportRequest" />
+ <wsdl:output message="tns:getAccountReportResponse" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="AccountServiceSOAP" type="tns:AccountService">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getAccountReport">
+ <soap:operation
+ soapAction="http://www.bigbank.com/AccountService/getAccountReport" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="AccountService">
+ <wsdl:port binding="tns:AccountServiceSOAP"
+ name="AccountServiceSOAP">
+ <soap:address
+ location="http://localhost:9090/axis2/services/AccountService" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/Makefile.am
new file mode 100644
index 0000000000..48843d8e56
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/Makefile.am
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/BigBank/deploy
+phpwsclientdir=$(deploydir)/bigbank.phpwsclient
+
+phpwsclient_DATA = *.php *.wsdl README
+EXTRA_DIST = *.php *.wsdl README
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/README
new file mode 100644
index 0000000000..d02873e860
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/README
@@ -0,0 +1,137 @@
+Big Bank PHP Client
+===================
+
+Overview
+--------
+
+This is a pair of very simple PHP scripts to demonstrate how the Accounts service
+that the C++ Big Bank sample exposes can be used from within the PHP scripting
+language.
+
+bigwelcome.php
+ A bootstrap script that shows a form and allows the user to press a button
+ in order to invoke the bigaccount.php script
+
+bigaccount.php
+ Makes a call to a locally installed BigBank Accounts service. The script
+ shows how to use PHP SDO and SOAP extensions to construct the call
+ and interpret the result.
+
+As this is a very simple test client once you have reached bigaccount.php you are done.
+So there are no further buttons other than the browser back button.
+
+Installation
+------------
+
+This assumes that you have the BigBank sample runnig as a web service in your local
+Axis2C container at http://localhost:9090/axis2/services/AccountService
+
+To run the php scripts requires some configuration and setup of a php runtime with
+the SDO and SimpleXML extensions enabled. The bits you will need are:
+
+Apache web server - http://httpd.apache.org/ (I'm currently at 2.0.55)
+PHP 5.1.6 - http://www.php.net/downloads.php (I'm currently at 5.1.6)
+PHP SDO - http://pecl.php.net/package/sdo (I'm currently at 1.0.3)
+
+Windows
+-------
+If you are on windows you can get binary builds from http://www.php.net/downloads.php.
+For SDO you need two dlls as followd
+
+php_sdo.dll http://pecl4win.php.net/ext.php/php_sdo.dll
+php_sdo_das_xml.dll http://pecl4win.php.net/ext.php/php_sdo_das_xml.dll
+
+I copied these to my php5.1.6/ext dir ( php_soap.dll is already there)
+
+And added the following to my php.ini file (having already renamed php.ini-recommended to
+php.ini of course)
+
+extension=php_soap.dll
+extension=php_sdo.dll
+extension=php_sdo_das_xml.dll
+
+I also changed the extension_dir directive to point to my extensions directory:
+
+extension_dir="C:/simon/apps/php5.1.6/ext"
+
+When I ask PHP to list what modules are active in my version of PHP I get the
+following
+
+C:\simon\apps\php5.1.6>php -m
+[PHP Modules]
+bcmath
+calendar
+com_dotnet
+ctype
+date
+dom
+ftp
+hash
+iconv
+libxml
+odbc
+pcre
+Reflection
+sdo
+sdo_das_xml
+session
+SimpleXML
+soap
+SPL
+standard
+tokenizer
+wddx
+xml
+xmlreader
+xmlwriter
+zlib
+
+[Zend Modules]
+
+Of particular relevance to these scripts note that soap, sdo and sd_das_xml are active.
+
+Other Platforms
+---------------
+
+If your on on another platform, such as Linux, then you will need to compile the
+SDO extension. The documentation at the SDO extension page (http://livedocs.phpdoc.info/index.php?l=en&q=ref.sdo)
+is currently a bit missleading and needs updating. What you need to do is do a
+phpize build of the SDO PECL extension. This is discussed in the SDO documentation
+but is also discussed in many other places, for example, http://www.php.net/manual/en/install.pecl.phpize.php.
+Here is not the time to go into the details of how to build PHP extensions using
+phpize but if you are familar with the process I use the following configure line
+on windows.
+
+cscript configure.js --with-extra-includes=c:\simon\projects\tuscany\php\win32build\include;
+ c:\simon\apps\libxml2-2.6.23.win32\include;
+ c:\simon\apps\iconv-1.9.1.win32\include
+ --with-extra-libs=c:\simon\projects\tuscany\php\win32build\lib;
+ c:\simon\apps\libxml2-2.6.23.win32\lib;
+ c:\simon\apps\iconv-1.9.1.win32\lib
+ --enable-sdo=shared
+ --enable-soap
+
+There are no newlines in my command line by the way. I've just included them
+here so you can see the command.
+
+Running
+-------
+
+You need to configure Apache to run PHP of course. This is well documented but this
+is what I put at the end of httpd.conf
+
+# PHP5 Support
+LoadModule php5_module "C:/simon/apps/php5.1.6/php5apache2.dll"
+AddType application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "C:/simon/apps/php5.1.6"
+
+Having set up Apache all that remains is to
+
+- put the bigbank.phpwsclient directory in your web server's root documents directory
+- start up the Axis2C runtime configured to run BigBank
+- point your browser at http://myserver:port/bigbank.phpwsclient/bigwelcome.php
+
+You should now be able to press the "GetAccount" button and see the values
+returned from the BigBank SCA application.
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigaccount.php b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigaccount.php
new file mode 100644
index 0000000000..b9f77d3297
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigaccount.php
@@ -0,0 +1,113 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+$Rev$ $Date: 2005/12/22 11:33:21 $
+-->
+<head>
+ <title>BigBank Sample</title>
+</head>
+
+<body BGCOLOR="#EFEFEF">
+
+<script type="text/javascript"></script>
+
+<?php
+ try
+ {
+ // In case we want to see what's in the request
+ //print_r ($_POST);
+
+ // get the entered account name
+ $accountname = $_POST['accountname'];
+
+ try
+ {
+ // configure the SOAP client
+ $client = new SoapClient("AccountService.wsdl");
+
+ // make the call but its a wrapped call so we
+ // can't just do...
+ // $result = $client->getAccountReport($accountname);
+ // we have to construct an object hierarchy that matches the
+ // WSDL request. We can use SDO to do this for us
+
+ // configure SDO based on the WSDL
+ $xmldas = SDO_DAS_XML::create("AccountService.wsdl");
+
+ // Get a document that represents the request
+ // and get the root element
+ $requestxdoc = $xmldas->createDocument("getAccountReport");
+ $requestsdo = $requestxdoc->getRootDataObject();
+
+ // add the parameter
+ $requestsdo['customerID'] = $accountname;
+
+ // make the call
+ $result = $client->getAccountReport($requestsdo);
+
+ // now we have the result as a PHP object
+ // we can turn this into an SDO but we have to do it manually
+ // as the SOAP extension won't generate types for us
+ // automatically just yet
+ $responsexdoc = $xmldas->createDocument("getAccountReportResponse");
+ $responsesdo = $responsexdoc->getRootDataObject();
+
+ // flesh out the object hierarchy
+ $account = $responsesdo->createDataObject ('result');
+ $checking = $account->createDataObject ('checking');
+ $saving = $account->createDataObject ('savings');
+ $stocks = $account->createDataObject ('stocks');
+
+ //copy the data
+ $checking['accountNumber'] = $result->result->checking->accountNumber;
+ $checking['balance'] = $result->result->checking->balance;
+ //etc..
+ // This is a bit rubbish as we would want this to happen automatically
+
+ // Now just put the data on the screen
+ // To do this we don't need to use SDO as you can see but
+ // it would be really handy if we wanted to pass the XML doc
+ // onto another service or if we wanted to do some other
+ // more complex XML manipulation or XPath searches
+ echo "<h2>Account $accountname</h2>";
+ echo "<h2>Checking Account</h2><table>";
+ echo "<tr><td>Account Number</td><td> $checking->accountNumber </td></tr>";
+ echo "<tr><td>Balance</td><td> $checking->balance </td></tr>";
+ echo "</table><h2>Saving Account</h2><table>";
+ echo "<tr><td>Account Number</td><td>" . $result->result->savings->accountNumber . "</td></tr>";
+ echo "<tr><td>Balance</td><td>" . $result->result->savings->balance . "</td></tr>";
+ echo "</table><h2>Stock Account</h2><table>";
+ echo "<tr><td>Account Number</td><td>" . $result->result->stocks->accountNumber . "</td></tr>";
+ echo "<tr><td>Symbol</td><td>" . $result->result->stocks->symbol . "</td></tr>";
+ echo "<tr><td>Quantity</td><td>" . $result->result->stocks->quantity . "</td></tr>";
+ echo "<tr><td>Banalce</td><td>" . $result->result->stocks->balance . "</td></tr>";
+ echo "</table>";
+ }
+ catch (SoapFault $f)
+ {
+ echo "Caught soap exception: \n";
+ print_r ( $f );
+ }
+ }
+ catch ( Exception $e )
+ {
+ echo "Caught exception: \n";
+ print_r ( $e );
+
+ }
+?>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigwelcome.php b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigwelcome.php
new file mode 100644
index 0000000000..32159ddc16
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.phpwsclient/bigwelcome.php
@@ -0,0 +1,44 @@
+<html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+$Rev$ $Date: 2005/12/22 11:33:21 $
+-->
+<head>
+ <title>BigBank Sample</title>
+</head>
+
+<body BGCOLOR="#EFEFEF">
+
+<script type="text/javascript"></script>
+
+<?php
+define('APP_ROOT', $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].'/bigbank.phpwsclient');
+?>
+
+<h1>Welcome To The BigBank Sample</h1>
+
+ <form action="http://<?php echo APP_ROOT . '/bigaccount.php' ?>" method="POST">
+ Please enter your account ID
+ <input type="text" name="accountname" size="30" value="ED" />
+ <button type="submit">GetAccount</button>
+ </form>
+
+ <div id="statusString"/>
+</body>
+</html>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/AccountWSClient.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/AccountWSClient.cpp
new file mode 100644
index 0000000000..b31959170f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/AccountWSClient.cpp
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "axis2_Account_stub.h"
+#include <stdio.h>
+#include <axiom.h>
+#include <axis2_util.h>
+#include <axiom_soap.h>
+#include <axis2_client.h>
+
+axiom_node_t *
+build_om_programatically(const axis2_env_t *env,
+ const axis2_char_t *operation,
+ const axis2_char_t *param1
+ );
+
+int main(int argc, char** argv)
+{
+ axis2_stub_t *stub = NULL;
+ axiom_node_t *node = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+ const axis2_env_t *env = NULL;
+ const axis2_char_t *address = NULL;
+ const axis2_char_t *client_home = NULL;
+ axiom_node_t *ret_node = NULL;
+
+ const axis2_char_t *operation = "getAccountReport";
+ const axis2_char_t *param1 = "ED";
+
+ env = axis2_env_create_all( "BigBank_blocking.log", AXIS2_LOG_LEVEL_TRACE);
+
+ client_home = AXIS2_GETENV("AXIS2C_HOME");
+ if (!client_home)
+ client_home = "../../deploy";
+
+ address = "http://localhost:9090/axis2/services/AccountService";
+ if (argc > 1 )
+ operation = argv[1];
+ if (AXIS2_STRCMP(operation, "-h") == 0)
+ {
+ printf("Usage : %s [operation] [param1] [endpoint_url]\n", argv[0]);
+ printf("use -h for help\n");
+ printf("default operation add\n");
+ printf("default param1 %s\n", param1);
+ printf("default endpoint_url %s\n", address);
+ printf("NOTE: command line arguments must appear in given order, with trailing ones being optional\n");
+ return 0;
+ }
+ if (argc > 2 )
+ param1 = argv[2];
+ if (argc > 3 )
+ address = argv[3];
+
+ printf ("Using endpoint : %s\n", address);
+ printf ("\nInvoking operation %s with param %s \n", operation, param1);
+
+ node = build_om_programatically(env, operation, param1);
+ stub =
+ axis2_Account_stub_create_with_endpoint_uri_and_client_home(env, address, client_home);
+ /* create node and invoke Calculator */
+ ret_node = axis2_Account_stub_getAccountReport(stub, env, node);
+ if(ret_node)
+ {
+ axis2_char_t *om_str = NULL;
+ om_str = AXIOM_NODE_TO_STRING(ret_node, env);
+ if(om_str)
+ {
+ printf("\nOM returned = %s\n", om_str);
+ }
+
+ //if (AXIOM_NODE_GET_NODE_TYPE(ret_node, env) == AXIOM_ELEMENT)
+ //{
+ // axis2_char_t *result = NULL;
+ // axiom_node_t *result_node = (axiom_node_t*)AXIOM_NODE_GET_FIRST_CHILD(ret_node, env);
+ // axiom_element_t *data_ele = (axiom_element_t*)AXIOM_NODE_GET_DATA_ELEMENT(result_node, env);
+
+ // result = AXIOM_ELEMENT_GET_TEXT(data_ele, env, result_node);
+ // printf( "\nResult = %s\n", result);
+ //}
+ //else
+ //{
+ // axiom_xml_writer_t *writer = NULL;
+ // axiom_output_t *om_output = NULL;
+ // axis2_char_t *buffer = NULL;
+ // writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_TRUE, 0,
+ // AXIS2_XML_PARSER_TYPE_BUFFER);
+ // om_output = axiom_output_create (env, writer);
+
+ // AXIOM_NODE_SERIALIZE (ret_node, env, om_output);
+ // buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(writer, env);
+ // printf ("\nReceived invalid OM as result : %s\n", buffer);
+ // if(NULL != buffer)
+ // {
+ // AXIS2_FREE(env->allocator, buffer);
+ // buffer = NULL;
+ // }
+ // if(NULL != om_output)
+ // {
+ // AXIOM_OUTPUT_FREE(om_output, env);
+ // om_output = NULL;
+ // }
+ //}
+ }
+ else
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ printf("Account stub invoke FAILED!\n");
+ }
+ if (stub)
+ {
+ AXIS2_STUB_FREE(stub, env);
+ }
+ return status;
+}
+
+axiom_node_t *
+build_om_programatically(const axis2_env_t *env,
+ const axis2_char_t *operation,
+ const axis2_char_t *param1
+ )
+{
+ axiom_node_t *Account_om_node = NULL;
+ axiom_element_t* Account_om_ele = NULL;
+ axiom_node_t* text_om_node = NULL;
+ axiom_element_t * text_om_ele = NULL;
+ axiom_node_t* first_om_node = NULL;
+ axiom_element_t * first_om_ele = NULL;
+ axiom_namespace_t *ns1 = NULL;
+
+
+ axiom_xml_writer_t *xml_writer = NULL;
+ axiom_output_t *om_output = NULL;
+ axis2_char_t *buffer = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.bigbank.com/AccountService", "ns1");
+
+ Account_om_ele = axiom_element_create(env, NULL, operation, ns1, &Account_om_node);
+
+ first_om_ele = axiom_element_create(env, Account_om_node, "customerID", NULL, &first_om_node);
+
+ text_om_ele = axiom_element_create(env, first_om_node, "customerID", NULL, &text_om_node);
+
+ AXIOM_ELEMENT_SET_TEXT(text_om_ele, env, param1, text_om_node);
+
+ xml_writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_FALSE, AXIS2_FALSE,
+ AXIS2_XML_PARSER_TYPE_BUFFER);
+ om_output = axiom_output_create( env, xml_writer);
+
+ AXIOM_NODE_SERIALIZE(Account_om_node, env, om_output);
+ buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(xml_writer, env);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "\nSending OM node in XML : %s \n", buffer);
+ if(NULL != buffer)
+ {
+ AXIS2_FREE(env->allocator, buffer);
+ buffer = NULL;
+ }
+ if(NULL != om_output)
+ {
+ AXIOM_OUTPUT_FREE(om_output, env);
+ om_output = NULL;
+ }
+
+ return Account_om_node;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/Makefile.am
new file mode 100644
index 0000000000..c9b565dc0c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/Makefile.am
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/BigBank/deploy
+wsclientdir=$(deploydir)/bigbank.wsclient
+
+wsclient_PROGRAMS = account_wsclient
+wsclient_SCRIPTS = runwsclient.sh
+EXTRA_DIST = runwsclient.sh
+
+AM_CPPFLAGS = $(CPPFLAGS)
+account_wsclient_SOURCES = axis2_Account_stub.cpp AccountWSClient.cpp
+noinst_HEADERS = *.h
+
+account_wsclient_LDADD = -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -lwoden \
+ -lwoden_wsdl \
+ -laxis2_xml_schema \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+
+INCLUDES = -I${AXIS2C_HOME}/include
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.cpp
new file mode 100644
index 0000000000..a219003a75
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.cpp
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "axis2_Account_stub.h"
+
+
+axis2_stub_t *
+axis2_Account_stub_create_with_endpoint_ref_and_client_home(const axis2_env_t *env,
+ axis2_endpoint_ref_t *endpoint_ref,
+ axis2_char_t *client_home)
+{
+ axis2_stub_t *stub = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ stub = (axis2_stub_t *)
+ axis2_stub_create_with_endpoint_ref_and_client_home(env, endpoint_ref,
+ client_home);
+ if(NULL == stub)
+ {
+ AXIS2_ERROR_SET(env->error,
+ AXIS2_ERROR_NO_MEMORY, (axis2_status_codes)AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_populate_axis_service( stub, env);
+ return stub;
+}
+
+void axis2_populate_axis_service( axis2_stub_t* stub, const axis2_env_t *env)
+{
+ axis2_svc_client_t* svc_client = NULL;
+ axis2_qname_t *op_qname = NULL;
+ axis2_svc_t* svc = NULL;
+ axis2_op_t* op = NULL;
+
+ /*Modifying the Service*/
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
+ svc = (axis2_svc_t*)AXIS2_SVC_CLIENT_GET_AXIS_SERVICE ( svc_client, env );
+
+ /*creating the operations*/
+
+ op_qname = axis2_qname_create(env,"getAccountReport" , "", NULL);
+ op = axis2_op_create_with_qname(env, op_qname);
+ AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
+ AXIS2_SVC_ADD_OP(svc, env, op);
+
+ }
+
+axis2_stub_t *
+axis2_Account_stub_create_with_endpoint_uri_and_client_home(const axis2_env_t *env,
+ const axis2_char_t *endpoint_uri,
+ const axis2_char_t *client_home)
+{
+ axis2_stub_t *stub = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ stub = (axis2_stub_t *)
+ axis2_stub_create_with_endpoint_uri_and_client_home(env, endpoint_uri,
+ client_home);
+ if(NULL == stub)
+ {
+ AXIS2_ERROR_SET(env->error,
+ AXIS2_ERROR_NO_MEMORY, (axis2_status_codes)AXIS2_FAILURE);
+ return NULL;
+ }
+
+ axis2_populate_axis_service( stub, env);
+
+ return stub;
+}
+
+/***************************Function implementation****************************/
+
+axiom_node_t *
+axis2_Account_stub_getAccountReport(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node)
+{
+ axis2_svc_client_t *svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ axis2_qname_t *op_qname = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT(stub, env);
+ op_qname = axis2_qname_create(env, "getAccountReport" , "", NULL);
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, node);
+
+ return ret_node;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.h
new file mode 100644
index 0000000000..f16b6d3a06
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.h
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef AXIS2_ECHO_STUB_H
+#define AXIS2_ECHO_STUB_H
+
+/**
+ * @file axis2_Calculator_stub.h
+ * @brief axis2 Calculator stub interface
+ */
+
+#include <axis2_stub.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+axiom_node_t *
+axis2_Account_stub_getAccountReport(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node);
+
+/**
+ * populate services
+ */
+void axis2_populate_axis_service( axis2_stub_t* stub, const axis2_env_t *env);
+
+/**
+ * Creates axis2_stub struct
+ * @param endpoint reference
+ * @return pointer to newly created axis2_stub struct
+ */
+axis2_stub_t *
+axis2_Account_stub_create_with_endpoint_ref_and_client_home(const axis2_env_t *env,
+ axis2_endpoint_ref_t *endpoint_ref,
+ axis2_char_t *client_home);
+
+/**
+ * Creates axis2_stub struct
+ * @param endpoint uri
+ * @return pointer to newly created axis2_stub struct
+ */
+axis2_stub_t *
+axis2_Account_stub_create_with_endpoint_uri_and_client_home(const axis2_env_t *env,
+ const axis2_char_t *endpoint_uri,
+ const axis2_char_t *client_home);
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_ECHO_STUB_H */
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.bat
new file mode 100644
index 0000000000..aa3f7d6dad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.bat
@@ -0,0 +1,32 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%"
+
+rem Run the client
+WSAccountClient.exe %*
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.sh
new file mode 100755
index 0000000000..fa7d7d6813
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/bigbank.wsclient/runwsclient.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+export LD_LIBRARY_PATH=$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+./account_wsclient
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploy.bat
new file mode 100644
index 0000000000..2f1bdf1423
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploy.bat
@@ -0,0 +1,67 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA BigBank sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+set package=bigbank.account
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set bbdir=%samplesdir%\BigBank
+set bbdeploydir=%bbdir%\deploy
+set samplebb=%bbdeploydir%\%package%
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %bbdir% mkdir %bbdir%
+if not exist %bbdeploydir% mkdir %bbdeploydir%
+if not exist %samplebb% mkdir %samplebb%
+
+set samplebbsrc=%srcdir%\%package%
+copy %srcdir%\bigbank.accountmanagement.composite %bbdeploydir%
+copy %samplebbsrc%\*.wsdl %samplebb%
+copy %samplebbsrc%\*.composite %samplebb%
+copy %samplebbsrc%\*.componentType %samplebb%
+copy %samplebbsrc%\runwsserver.bat %samplebb%
+
+set library=Account
+copy %inpath%\%library%.dll %samplebb%
+
+if exist %inpath%\%library%.pdb copy %inpath%\%library%.pdb %samplebb%
+
+goto end
+:usage
+echo Usage: deploy <sample-src> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deployclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deployclient.bat
new file mode 100644
index 0000000000..1f47e5ab13
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deployclient.bat
@@ -0,0 +1,63 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA BigBank sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+set package=bigbank.client
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set bbdir=%samplesdir%\BigBank
+set bbdeploydir=%bbdir%\deploy
+set clientdir=%bbdeploydir%\%package%
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %bbdir% mkdir %bbdir%
+if not exist %bbdeploydir% mkdir %bbdeploydir%
+if not exist %clientdir% mkdir %clientdir%
+
+set clientdirsrc=%srcdir%\%package%
+copy %clientdirsrc%\runclient.bat %clientdir%
+
+set library=AccountClient
+copy %inpath%\%library%.exe %clientdir%
+
+if exist %inpath%\%library%.pdb copy %inpath%\%library%.pdb %clientdir%
+
+goto end
+:usage
+echo Usage: deploy <sample-src> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploywsclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploywsclient.bat
new file mode 100644
index 0000000000..3e2ce687fe
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/BigBank/deploywsclient.bat
@@ -0,0 +1,63 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA BigBank sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+set package=bigbank.wsclient
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set bbdir=%samplesdir%\BigBank
+set bbdeploydir=%bbdir%\deploy
+set clientdir=%bbdeploydir%\%package%
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %bbdir% mkdir %bbdir%
+if not exist %bbdeploydir% mkdir %bbdeploydir%
+if not exist %clientdir% mkdir %clientdir%
+
+set clientdirsrc=%srcdir%\%package%
+copy %clientdirsrc%\runwsclient.bat %clientdir%
+
+set library=WSAccountClient
+copy %inpath%\%library%.exe %clientdir%
+
+if exist %inpath%\%library%.pdb copy %inpath%\%library%.pdb %clientdir%
+
+goto end
+:usage
+echo Usage: deploy <sample-src> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/COPYING b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/COPYING
new file mode 100755
index 0000000000..6b0b1270ff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/COPYING
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/Makefile.am
new file mode 100644
index 0000000000..88ec180a84
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/Makefile.am
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/Calculator/deploy
+SUBDIRS = sample.calculator sample.calculator.client sample.calculator.wsclient
+EXTRA_DIST = *.composite README.html
+deploy_DATA = *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README
new file mode 100644
index 0000000000..4104ff46b6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README
@@ -0,0 +1,23 @@
+Tuscany SCA for C++ Samples - Calculator Sample
+===============================================
+
+This is a very simple sample to show how an SCA composite can wire together
+two components to implement a Calculator service and expose that service as
+a Web Service.
+
+There are three sub projects in this workspace:
+ - sample.calculator
+ This contains the source code and SCDL artifacts for the SCA Calculator.
+ composite implementing the sample Calculator.
+
+ - sample.calculator.client
+ A sample client which does a local call to the Calculator service.
+
+ - sample.calculator.wsclient
+ A sample Axis2 Web Service client which calls the Calculator Web service.
+
+Additionally, there is the sample.calculator.solution.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
+
+See the README.html file for instructions to build and run this sample
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README.html b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README.html
new file mode 100644
index 0000000000..8a1198df46
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/README.html
@@ -0,0 +1,254 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("../../doc/css/maven-base.css");
+@import url("../../doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ Samples - Calculator Sample</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ Samples - Calculator Sample</H2>
+
+ <P>This is a very simple sample to show how an SCA composite can wire
+ together two C++ components to implement a Calculator service and expose
+ that service as a Web Service.
+ </P>
+ <P>There are three sub projects in this workspace:</P>
+ <UL>
+ <LI>sample.calculator<BR/>
+ This contains the source code and SCDL artifacts for the SCA Calculator
+ composite implementing the sample Calculator.
+ </LI>
+ <LI>sample.calculator.client<BR/>
+ A sample client which does a local call to the Calculator service.
+ </LI>
+ <LI>sample.calculator.wsclient<BR/>
+ A sample Axis2 Web Service client which calls the Calculator Web service.
+ </LI>
+ </UL>
+ <P>Additionally, there is the sample.calculator.solution.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#linuxbld">Building the C++ samples on Linux</A></LI>
+ <LI><A HREF="#linuxrun">Running the Calculator sample on Linux:</A></LI>
+ <UL>
+ <LI><A HREF="#linuxbasic">Running the basic client</A></LI>
+ <LI><A HREF="#linuxws">Running the Web Service client</A></LI>
+ </UL>
+ <LI><A HREF="#winbld">Building the Calculator sample on Windows</A></LI>
+ <LI><A HREF="#winrun">Running the Calculator sample on Windows:</A></LI>
+ <UL>
+ <LI><A HREF="#winbasic">Running the basic client</A></LI>
+ <LI><A HREF="#winws">Running the Web Service client</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="linuxbld"><H2>Building the C++ samples on Linux</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;/samples - go directly to <A HREF="#linuxrun">Running the samples on Linux</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>Build the C++ samples with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples</LI>
+ <LI>./configure --prefix=$TUSCANY_SCACPP --enable-static=no</LI>
+ <LI>make</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide the --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/Calculator</LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="linuxrun"><H2>Running the Calculator sample on Linux</H2></A>
+ <A NAME="linuxbasic"><H3>Calculator with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.92&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/Calculator/deploy/sample.calculator.client</LI>
+ <LI>./runclient.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="linuxws"><H3>Calculator with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/Calculator/deploy/sample.calculator
+ </LI>
+ <LI>./runwsserver.sh</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variable is required:
+ <UL>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/Calculator/deploy/sample.calculator.wsclient</LI>
+ <LI>./runwsclient.sh</LI>
+ </OL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winbld"><H2>Building the Calculator sample on Windows</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;\samples - go directly to <A HREF="#winrun">Running the samples on Windows</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>You must have set up the environment for Microsoft Visual C++ tools.
+ The build command will call vcvars32 to set the environment. Ensure the
+ directory containing this is on your path. This will be where you
+ installed the compiler.
+ </LI>
+ <LI>Build the source, either via the Visual Studio 6 or 7 projects under
+ &lt;tuscany_sca_install_dir&gt;\samples\ides or via the command-line build file
+ found at &lt;tuscany_sca_install_dir&gt;\samples\ides\devstudio6\projects\Calculator\build.cmd
+ which will build and deploy the samples.
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winrun"><H2>Running the Calculator sample on Windows</H2></A>
+ <A NAME="winbasic"><H3>Calculator with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\Calculator\deploy\sample.calculator.client</LI>
+ <LI>runclient.bat</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="winws"><H3>Calculator with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\Calculator\deploy\sample.calculator</LI>
+ <LI>runwsserver.bat</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variable is required:
+ <UL>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\Calculator\deploy\sample.calculator.wsclient</LI>
+ <LI>runwsclient.bat</LI>
+ </OL>
+ </LI>
+ </OL>
+ </DIV>
+
+
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploy.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploy.bat
new file mode 100644
index 0000000000..efd18e8219
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploy.bat
@@ -0,0 +1,67 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA Calculator sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+set package=sample.calculator
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set calcdir=%samplesdir%\Calculator
+set calcdeploydir=%calcdir%\deploy
+set samplecalc=%calcdeploydir%\%package%
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %calcdir% mkdir %calcdir%
+if not exist %calcdeploydir% mkdir %calcdeploydir%
+if not exist %samplecalc% mkdir %samplecalc%
+
+set samplecalcsrc=%srcdir%\%package%
+copy %srcdir%\%package%.solution.composite %calcdeploydir%
+copy %samplecalcsrc%\*.wsdl %samplecalc%
+copy %samplecalcsrc%\*.composite %samplecalc%
+copy %samplecalcsrc%\*.componentType %samplecalc%
+copy %samplecalcsrc%\runwsserver.bat %samplecalc%
+
+set library=Calculator
+copy %inpath%\%library%.dll %samplecalc%
+
+if exist %inpath%\%library%.pdb copy %inpath%\%library%.pdb %samplecalc%
+
+goto end
+:usage
+echo Usage: deploy <sample-src> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deployclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deployclient.bat
new file mode 100644
index 0000000000..bf4fd47d43
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deployclient.bat
@@ -0,0 +1,63 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA Calculator sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+set package=sample.calculator.client
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set calcdir=%samplesdir%\Calculator
+set calcdeploydir=%calcdir%\deploy
+set clientdir=%calcdeploydir%\%package%
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %calcdir% mkdir %calcdir%
+if not exist %calcdeploydir% mkdir %calcdeploydir%
+if not exist %clientdir% mkdir %clientdir%
+
+set clientdirsrc=%srcdir%\%package%
+copy %clientdirsrc%\runclient.bat %clientdir%
+
+set library=calculator_client
+copy %inpath%\%library%.exe %clientdir%
+
+if exist %inpath%\%library%.pdb copy %inpath%\%library%.pdb %clientdir%
+
+goto end
+:usage
+echo Usage: deploy <sample-src> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploywsclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploywsclient.bat
new file mode 100644
index 0000000000..8b1b1a53c5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/deploywsclient.bat
@@ -0,0 +1,63 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA Calculator sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+set package=sample.calculator.wsclient
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set calcdir=%samplesdir%\Calculator
+set calcdeploydir=%calcdir%\deploy
+set clientdir=%calcdeploydir%\%package%
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %calcdir% mkdir %calcdir%
+if not exist %calcdeploydir% mkdir %calcdeploydir%
+if not exist %clientdir% mkdir %clientdir%
+
+set clientdirsrc=%srcdir%\%package%
+copy %clientdirsrc%\runwsclient.bat %clientdir%
+
+set library=calculator_wsclient
+copy %inpath%\%library%.exe %clientdir%
+
+if exist %inpath%\%library%.pdb copy %inpath%\%library%.pdb %clientdir%
+
+goto end
+:usage
+echo Usage: deploy <sample-src> <build-output>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/CalculatorClient.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/CalculatorClient.cpp
new file mode 100644
index 0000000000..9ec8b04bd1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/CalculatorClient.cpp
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "Calculator.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+
+#include "tuscany/sca/core/TuscanyRuntime.h"
+using namespace tuscany::sca;
+
+#include <iostream>
+#include <stdlib.h>
+using namespace std;
+
+
+void usage();
+bool IsNumber(const char *p);
+
+int main(int argc, char* argv[])
+{
+ const char *operation;
+ float arg1 = 0;
+ float arg2 = 0;
+
+ if (argc == 4)
+ {
+ operation = argv[1];
+
+ if (!IsNumber(argv[2]))
+ {
+ cout << "calculator_client: Argument 1 is not a number" << endl;
+ usage();
+ }
+ else
+ {
+ arg1 = atof(argv[2]);
+ }
+
+ if (!IsNumber(argv[3]))
+ {
+ cout << "calculator_client: Argument 2 is not a number" << endl;
+ usage();
+ }
+ else
+ {
+ arg2 = atof(argv[3]);
+ }
+ }
+ else
+ {
+ usage();
+ }
+
+ try
+ {
+ // Locate a service
+ CompositeContext myContext = CompositeContext::getCurrent();
+ Calculator *calcService = (Calculator*) myContext.locateService("CalculatorComponent/CalculatorService");
+ if (calcService == 0)
+ {
+ cout << "calculator_client: Unable to find Calculator service" << endl;
+ }
+ else
+ {
+ try
+ {
+ float result = 0;
+ if (strcmp(operation, "add") == 0)
+ {
+ result = calcService->add(arg1, arg2);
+ cout << "calculator_client: add(" << arg1 << "," << arg2 << ") = " << result << endl;
+ }
+ else
+ if (strcmp(operation, "sub") == 0)
+ {
+ result = calcService->sub(arg1, arg2);
+ cout << "calculator_client: sub(" << arg1 << "," << arg2 << ") = " << result << endl;
+ }
+ else
+ if (strcmp(operation, "mul") == 0)
+ {
+ result = calcService->mul(arg1, arg2);
+ cout << "calculator_client: mul(" << arg1 << "," << arg2 << ") = " << result << endl;
+ }
+ else
+ if (strcmp(operation, "div") == 0)
+ {
+ result = calcService->div(arg1, arg2);
+ cout << "calculator_client: div(" << arg1 << "," << arg2 << ") = " << result << endl;
+ }
+ else
+ {
+ cout << "calculator_client: Unrecognized operation: " << operation << endl;
+ }
+ }
+ catch (char* x)
+ {
+ cout << "calculator_client: exception caught: " << x << endl;
+ }
+ }
+
+ }
+ catch (ServiceRuntimeException& ex)
+ {
+ cout << ex << endl;
+ }
+ return 0;
+}
+
+void usage()
+{
+ cout << "Usage: calculator_client add|sub|mul|div arg1 arg2" << endl;
+ exit(1);
+}
+
+bool IsNumber (const char *p)
+{
+ int len = strlen(p);
+ int pointcount = 0;
+
+ if (!isdigit (p[0]) && p[0] != '-' && p[0] != '+')
+ {
+ return false;
+ }
+ for (int i = 1; i < len; i++)
+ {
+ if (!isdigit (p[i]))
+ {
+ if (p[i] == '.')
+ {
+ if (pointcount > 0) return false;
+ pointcount++;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/Makefile.am
new file mode 100644
index 0000000000..ced28cf042
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/Makefile.am
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/Calculator/deploy
+clientdir=$(deploydir)/sample.calculator.client
+
+client_PROGRAMS = calculator_client
+client_SCRIPTS = runclient.sh
+EXTRA_DIST = runclient.sh
+
+AM_CPPFLAGS = $(CPPFLAGS)
+calculator_client_SOURCES = \
+CalculatorClient.cpp
+
+calculator_client_LDADD = \
+-L${TUSCANY_SCACPP}/lib \
+ -ltuscany_sca \
+-L${TUSCANY_SCACPP}/extensions/cpp/lib \
+ -ltuscany_sca_cpp \
+-L${TUSCANY_SDOCPP}/lib \
+ -ltuscany_sdo \
+ -ltuscany_sdo_axiom \
+-L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -lwoden \
+ -lwoden_wsdl \
+ -laxis2_xml_schema \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+INCLUDES = \
+-I$(TUSCANY_SCACPP)/extensions/cpp/include \
+-I${TUSCANY_SCACPP}/include \
+-I${TUSCANY_SDOCPP}/include \
+-I../sample.calculator
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.bat
new file mode 100644
index 0000000000..f4308ff739
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.bat
@@ -0,0 +1,48 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+.\calculator_client.exe div 5 2
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.sh
new file mode 100755
index 0000000000..ec4b3bb643
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.client/runclient.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SCACPP/extensions/cpp/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+./calculator_client div 5 2
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.solution.composite
new file mode 100644
index 0000000000..0445d645e4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.solution.composite
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.solution">
+
+ <component name="sample.calculator.CalculatorComponent">
+ <implementation.composite name="sample.calculator" />
+ </component>
+
+</composite>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/CalculatorWSClient.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/CalculatorWSClient.cpp
new file mode 100644
index 0000000000..267baf1722
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/CalculatorWSClient.cpp
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "axis2_Calculator_stub.h"
+#include <stdio.h>
+#include <axiom.h>
+#include <axis2_util.h>
+#include <axiom_soap.h>
+#include <axis2_client.h>
+
+axiom_node_t *
+build_om_programatically(const axis2_env_t *env,
+ const axis2_char_t *operation,
+ const axis2_char_t *param1,
+ const axis2_char_t *param2);
+
+int main(int argc, char** argv)
+{
+ axis2_stub_t *stub = NULL;
+ axiom_node_t *node = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+ const axis2_env_t *env = NULL;
+ const axis2_char_t *address = NULL;
+ const axis2_char_t *client_home = NULL;
+ axiom_node_t *ret_node = NULL;
+
+ const axis2_char_t *operation = "add";
+ const axis2_char_t *param1 = "40";
+ const axis2_char_t *param2 = "8";
+
+ env = axis2_env_create_all( "CalculatorService_blocking.log", AXIS2_LOG_LEVEL_TRACE);
+
+ client_home = AXIS2_GETENV("AXIS2C_HOME");
+ if (!client_home)
+ client_home = "../../deploy";
+
+ address = "http://localhost:9090/axis2/services/CalculatorService";
+ if (argc > 1 )
+ operation = argv[1];
+ if (AXIS2_STRCMP(operation, "-h") == 0)
+ {
+ printf("Usage : %s [operation] [param1] [param2] [endpoint_url]\n", argv[0]);
+ printf("use -h for help\n");
+ printf("default operation add\n");
+ printf("default param1 %s\n", param1);
+ printf("default param2 %s\n", param2);
+ printf("default endpoint_url %s\n", address);
+ printf("NOTE: command line arguments must appear in given order, with trailing ones being optional\n");
+ return 0;
+ }
+ if (argc > 2 )
+ param1 = argv[2];
+ if (argc > 3 )
+ param2 = argv[3];
+ if (argc > 4 )
+ address = argv[4];
+
+ printf ("Using endpoint : %s\n", address);
+ printf ("\nInvoking operation %s with params %s and %s\n", operation, param1, param2);
+
+ node = build_om_programatically(env, operation, param1, param2);
+ stub =
+ axis2_Calculator_stub_create_with_endpoint_uri_and_client_home(env, address, client_home);
+ /* create node and invoke Calculator */
+ ret_node = axis2_Calculator_stub_add(stub, env, node);
+ if(ret_node)
+ {
+ axis2_char_t *om_str = NULL;
+ om_str = AXIOM_NODE_TO_STRING(ret_node, env);
+ if(om_str)
+ {
+ printf("\nOM returned = %s\n", om_str);
+ }
+
+ if (AXIOM_NODE_GET_NODE_TYPE(ret_node, env) == AXIOM_ELEMENT)
+ {
+ axis2_char_t *result = NULL;
+ axiom_node_t *result_node = (axiom_node_t*)AXIOM_NODE_GET_FIRST_CHILD(ret_node, env);
+ axiom_element_t *data_ele = (axiom_element_t*)AXIOM_NODE_GET_DATA_ELEMENT(result_node, env);
+
+ result = AXIOM_ELEMENT_GET_TEXT(data_ele, env, result_node);
+ printf( "\nResult = %s\n", result);
+ }
+ else
+ {
+ axiom_xml_writer_t *writer = NULL;
+ axiom_output_t *om_output = NULL;
+ axis2_char_t *buffer = NULL;
+ writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_TRUE, 0,
+ AXIS2_XML_PARSER_TYPE_BUFFER);
+ om_output = axiom_output_create (env, writer);
+
+ AXIOM_NODE_SERIALIZE (ret_node, env, om_output);
+ buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(writer, env);
+ printf ("\nReceived invalid OM as result : %s\n", buffer);
+ if(NULL != buffer)
+ {
+ AXIS2_FREE(env->allocator, buffer);
+ buffer = NULL;
+ }
+ if(NULL != om_output)
+ {
+ AXIOM_OUTPUT_FREE(om_output, env);
+ om_output = NULL;
+ }
+ }
+ }
+ else
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ printf("Calculator stub invoke FAILED!\n");
+ }
+ if (stub)
+ {
+ AXIS2_STUB_FREE(stub, env);
+ }
+ return status;
+}
+
+axiom_node_t *
+build_om_programatically(const axis2_env_t *env,
+ const axis2_char_t *operation,
+ const axis2_char_t *param1,
+ const axis2_char_t *param2)
+{
+ axiom_node_t *Calculator_om_node = NULL;
+ axiom_element_t* Calculator_om_ele = NULL;
+ axiom_node_t* text_om_node = NULL;
+ axiom_element_t * text_om_ele = NULL;
+ axiom_namespace_t *ns1 = NULL;
+
+
+ axiom_xml_writer_t *xml_writer = NULL;
+ axiom_output_t *om_output = NULL;
+ axis2_char_t *buffer = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://sample/calculator", "ns1");
+
+ Calculator_om_ele = axiom_element_create(env, NULL, operation, ns1, &Calculator_om_node);
+
+ text_om_ele = axiom_element_create(env, Calculator_om_node, "param1", NULL, &text_om_node);
+ AXIOM_ELEMENT_SET_TEXT(text_om_ele, env, param1, text_om_node);
+
+ text_om_ele = axiom_element_create(env, Calculator_om_node, "param2", NULL, &text_om_node);
+ AXIOM_ELEMENT_SET_TEXT(text_om_ele, env, param2, text_om_node);
+
+ xml_writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_FALSE, AXIS2_FALSE,
+ AXIS2_XML_PARSER_TYPE_BUFFER);
+ om_output = axiom_output_create( env, xml_writer);
+
+ AXIOM_NODE_SERIALIZE(Calculator_om_node, env, om_output);
+ buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(xml_writer, env);
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "\nSending OM node in XML : %s \n", buffer);
+ if(NULL != buffer)
+ {
+ AXIS2_FREE(env->allocator, buffer);
+ buffer = NULL;
+ }
+ if(NULL != om_output)
+ {
+ AXIOM_OUTPUT_FREE(om_output, env);
+ om_output = NULL;
+ }
+
+ return Calculator_om_node;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am
new file mode 100644
index 0000000000..5d0af5df1f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/Calculator/deploy
+wsclientdir=$(deploydir)/sample.calculator.wsclient
+
+wsclient_PROGRAMS = calculator_wsclient
+wsclient_SCRIPTS = runwsclient.sh
+EXTRA_DIST = runwsclient.sh
+
+AM_CPPFLAGS = $(CPPFLAGS)
+
+calculator_wsclient_SOURCES = \
+axis2_Calculator_stub.cpp \
+CalculatorWSClient.cpp
+
+noinst_HEADERS = *.h
+
+calculator_wsclient_LDADD = \
+-L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -lwoden \
+ -lwoden_wsdl \
+ -laxis2_xml_schema \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+INCLUDES = -I${AXIS2C_HOME}/include
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.cpp
new file mode 100644
index 0000000000..a24a3c9ed6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.cpp
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "axis2_Calculator_stub.h"
+
+
+axis2_stub_t *
+axis2_Calculator_stub_create_with_endpoint_ref_and_client_home(const axis2_env_t *env,
+ axis2_endpoint_ref_t *endpoint_ref,
+ axis2_char_t *client_home)
+{
+ axis2_stub_t *stub = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ stub = (axis2_stub_t *)
+ axis2_stub_create_with_endpoint_ref_and_client_home(env, endpoint_ref,
+ client_home);
+ if(NULL == stub)
+ {
+ AXIS2_ERROR_SET(env->error,
+ AXIS2_ERROR_NO_MEMORY, (axis2_status_codes)AXIS2_FAILURE);
+ return NULL;
+ }
+ axis2_populate_axis_service( stub, env);
+ return stub;
+}
+
+void axis2_populate_axis_service( axis2_stub_t* stub, const axis2_env_t *env)
+{
+ axis2_svc_client_t* svc_client = NULL;
+ axis2_qname_t *op_qname = NULL;
+ axis2_svc_t* svc = NULL;
+ axis2_op_t* op = NULL;
+
+ /*Modifying the Service*/
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
+ svc = (axis2_svc_t*)AXIS2_SVC_CLIENT_GET_AXIS_SERVICE ( svc_client, env );
+
+ /*creating the operations*/
+
+ op_qname = axis2_qname_create(env,"add" , "", NULL);
+ op = axis2_op_create_with_qname(env, op_qname);
+ AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
+ AXIS2_SVC_ADD_OP(svc, env, op);
+
+ op_qname = axis2_qname_create(env,"sub" , "", NULL);
+ op = axis2_op_create_with_qname(env, op_qname);
+ AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
+ AXIS2_SVC_ADD_OP(svc, env, op);
+
+ op_qname = axis2_qname_create(env,"mul" , "", NULL);
+ op = axis2_op_create_with_qname(env, op_qname);
+ AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
+ AXIS2_SVC_ADD_OP(svc, env, op);
+
+ op_qname = axis2_qname_create(env,"div" , "", NULL);
+ op = axis2_op_create_with_qname(env, op_qname);
+ AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
+ AXIS2_SVC_ADD_OP(svc, env, op);
+}
+
+axis2_stub_t *
+axis2_Calculator_stub_create_with_endpoint_uri_and_client_home(const axis2_env_t *env,
+ const axis2_char_t *endpoint_uri,
+ const axis2_char_t *client_home)
+{
+ axis2_stub_t *stub = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ stub = (axis2_stub_t *)
+ axis2_stub_create_with_endpoint_uri_and_client_home(env, endpoint_uri,
+ client_home);
+ if(NULL == stub)
+ {
+ AXIS2_ERROR_SET(env->error,
+ AXIS2_ERROR_NO_MEMORY, (axis2_status_codes)AXIS2_FAILURE);
+ return NULL;
+ }
+
+ axis2_populate_axis_service( stub, env);
+
+ return stub;
+}
+
+/***************************Function implementation****************************/
+
+axiom_node_t *
+axis2_Calculator_stub_add(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node)
+{
+ axis2_svc_client_t *svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ axis2_qname_t *op_qname = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT(stub, env);
+ op_qname = axis2_qname_create(env, "add" , "", NULL);
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, node);
+
+ return ret_node;
+}
+
+axiom_node_t *
+axis2_Calculator_stub_sub(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node)
+{
+ axis2_svc_client_t *svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ axis2_qname_t *op_qname = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT(stub, env);
+ op_qname = axis2_qname_create(env, "sub" , "", NULL);
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, node);
+
+ return ret_node;
+}
+
+axiom_node_t *
+axis2_Calculator_stub_mul(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node)
+{
+ axis2_svc_client_t *svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ axis2_qname_t *op_qname = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT(stub, env);
+ op_qname = axis2_qname_create(env, "mul" , "", NULL);
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, node);
+
+ return ret_node;
+}
+
+axiom_node_t *
+axis2_Calculator_stub_div(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node)
+{
+ axis2_svc_client_t *svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ axis2_qname_t *op_qname = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ svc_client = AXIS2_STUB_GET_SVC_CLIENT(stub, env);
+ op_qname = axis2_qname_create(env, "div" , "", NULL);
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, node);
+
+ return ret_node;
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.h
new file mode 100644
index 0000000000..833c6f85c6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.h
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef AXIS2_ECHO_STUB_H
+#define AXIS2_ECHO_STUB_H
+
+/**
+ * @file axis2_Calculator_stub.h
+ * @brief axis2 Calculator stub interface
+ */
+
+#include <axis2_stub.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+axiom_node_t *
+axis2_Calculator_stub_add(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node);
+
+axiom_node_t *
+axis2_Calculator_stub_sub(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node);
+
+axiom_node_t *
+axis2_Calculator_stub_mul(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node);
+
+axiom_node_t *
+axis2_Calculator_stub_div(axis2_stub_t *stub,
+ const axis2_env_t *env,
+ axiom_node_t *node);
+/**
+ * populate services
+ */
+void axis2_populate_axis_service( axis2_stub_t* stub, const axis2_env_t *env);
+
+/**
+ * Creates axis2_stub struct
+ * @param endpoint reference
+ * @return pointer to newly created axis2_stub struct
+ */
+axis2_stub_t *
+axis2_Calculator_stub_create_with_endpoint_ref_and_client_home(const axis2_env_t *env,
+ axis2_endpoint_ref_t *endpoint_ref,
+ axis2_char_t *client_home);
+
+/**
+ * Creates axis2_stub struct
+ * @param endpoint uri
+ * @return pointer to newly created axis2_stub struct
+ */
+axis2_stub_t *
+axis2_Calculator_stub_create_with_endpoint_uri_and_client_home(const axis2_env_t *env,
+ const axis2_char_t *endpoint_uri,
+ const axis2_char_t *client_home);
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_ECHO_STUB_H */
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.bat
new file mode 100644
index 0000000000..6d50f23370
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.bat
@@ -0,0 +1,32 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%"
+
+rem Run the client
+.\calculator_wsclient.exe div 5 2
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.sh
new file mode 100755
index 0000000000..51d8dbac22
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+export LD_LIBRARY_PATH=$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+./calculator_wsclient div 5 2
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.h
new file mode 100644
index 0000000000..1a88c9cb67
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.h
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef sample_calculator_h
+#define sample_calculator_h
+
+class Calculator
+{
+public:
+ virtual float add(float arg1, float arg2) = 0;
+ virtual float sub(float arg1, float arg2) = 0;
+ virtual float mul(float arg1, float arg2) = 0;
+ virtual float div(float arg1, float arg2) = 0;
+};
+
+#endif // sample_calculator_h
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.wsdl
new file mode 100644
index 0000000000..37529c06c5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Calculator.wsdl
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator"
+ targetNamespace="http://sample/calculator">
+ <types>
+ <xs:schema targetNamespace="http://sample/calculator"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator" elementFormDefault="qualified">
+
+ <xs:element name="add">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="mul">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="div">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="result">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="data" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </types>
+
+ <message name="addRequestMsg">
+ <part name="body" element="tns:add" />
+ </message>
+ <message name="subRequestMsg">
+ <part name="body" element="tns:sub" />
+ </message>
+ <message name="mulRequestMsg">
+ <part name="body" element="tns:mul" />
+ </message>
+ <message name="divRequestMsg">
+ <part name="body" element="tns:div" />
+ </message>
+
+ <message name="calculatorResponseMsg">
+ <part name="body" element="tns:result" />
+ </message>
+
+ <portType name="Calculator">
+ <operation name="add">
+ <input message="tns:addRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="sub">
+ <input message="tns:subRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="mul">
+ <input message="tns:mulRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="div">
+ <input message="tns:divRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ </portType>
+
+ <binding name="CalculatorBinding"
+ type="tns:Calculator">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="add">
+ <soap:operation soapAction="CalculatorService#add" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="sub">
+ <soap:operation soapAction="CalculatorService#sub" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="mul">
+ <soap:operation soapAction="CalculatorService#mul" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="div">
+ <soap:operation soapAction="CalculatorService#div" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+ <service name="CalculatorService">
+ <port name="CalculatorPort"
+ binding="tns:CalculatorBinding">
+ <soap:address location="http://localhost:9090/axis2/services/CalculatorService" />
+ </port>
+ </service>
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.componentType
new file mode 100644
index 0000000000..72fe9842e8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.componentType
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="CalculatorService">
+ <interface.cpp header="Calculator.h"/>
+ </service>
+
+ <reference name="divideService">
+ <interface.cpp header="Divide.h"/>
+ </reference>
+
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.cpp
new file mode 100644
index 0000000000..73abf2f1df
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.cpp
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "CalculatorImpl.h"
+#include <stdio.h>
+
+#include "Divide.h"
+#include "osoa/sca/ComponentContext.h"
+#include "osoa/sca/ServiceRuntimeException.h"
+
+CalculatorImpl::CalculatorImpl()
+{
+}
+
+CalculatorImpl::~CalculatorImpl()
+{
+}
+
+// Calculator interface
+float CalculatorImpl::add(float arg1, float arg2)
+{
+ float result = arg1 + arg2;
+
+ printf("CalculatorImpl::add %f + %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::sub(float arg1, float arg2)
+{
+ float result = arg1 - arg2;
+ printf("CalculatorImpl::sub %f - %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::mul(float arg1, float arg2)
+{
+ float result = arg1 * arg2;
+ printf("CalculatorImpl::mul %f * %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::div(float arg1, float arg2)
+{
+ float result = 0;
+
+ // This method shows how to invoke a service on a different component from within a component
+
+ // First, get the current ComponentContext
+ osoa::sca::ComponentContext myContext = osoa::sca::ComponentContext::getCurrent();
+
+ try
+ {
+ // Find the required service, as referenced in CalculatorImpl.componentType
+ Divide* divideService = (Divide*)myContext.getService("divideService");
+
+ // Finally, invoke the service
+ result = divideService->divide(arg1, arg2);
+
+ printf("CalculatorImpl::div Divide returned result: %f\n", result);
+
+ }
+ catch (osoa::sca::ServiceRuntimeException& e)
+ {
+ // Print out error message and carry on
+ printf("CalculatorImpl::div Error whilst invoking Divide: %s", e.getMessageText());
+ }
+
+ return result;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.h
new file mode 100644
index 0000000000..af8a5eeab1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/CalculatorImpl.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef sample_calculatorimpl_h
+#define sample_calculatorimpl_h
+
+#include "Calculator.h"
+
+class CalculatorImpl : public Calculator
+{
+public:
+ CalculatorImpl();
+ virtual ~CalculatorImpl();
+
+ // Calculator interface
+ virtual float add(float arg1, float arg2);
+ virtual float sub(float arg1, float arg2);
+ virtual float mul(float arg1, float arg2);
+ virtual float div(float arg1, float arg2);
+};
+
+#endif // sample_calculatorimpl_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Divide.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Divide.h
new file mode 100644
index 0000000000..6e171ed733
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Divide.h
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef sample_divide_h
+#define sample_divide_h
+
+class Divide
+{
+public:
+ virtual float divide(float arg1, float arg2) = 0;
+};
+
+#endif // sample_divide_h
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.componentType
new file mode 100644
index 0000000000..d7369e3ff0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.componentType
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="DivideService">
+ <interface.cpp header="Divide.h"/>
+ </service>
+
+</componentType>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.cpp
new file mode 100644
index 0000000000..8b9db46ecb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.cpp
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "DivideImpl.h"
+#include <stdio.h>
+
+DivideImpl::DivideImpl()
+{
+}
+
+DivideImpl::~DivideImpl()
+{
+}
+
+// Divide interface
+float DivideImpl::divide(float arg1, float arg2)
+{
+ if(arg2 == 0.0)
+ {
+ printf("DivideImpl::div %f / %f !! Cannot divide by zero, so returning 0\n", arg1, arg2);
+ return 0;
+ }
+
+ float result = arg1 / arg2;
+ printf("DivideImpl::div %f / %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.h
new file mode 100644
index 0000000000..64045f1899
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/DivideImpl.h
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef sample_divideimpl_h
+#define sample_divideimpl_h
+
+#include "Divide.h"
+
+class DivideImpl : public Divide
+{
+public:
+ DivideImpl();
+ virtual ~DivideImpl();
+
+ // Divide interface
+ virtual float divide(float arg1, float arg2);
+};
+
+#endif // sample_divideimpl_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Makefile.am
new file mode 100644
index 0000000000..c57d0c9fe5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/Makefile.am
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/Calculator/deploy
+compositedir=$(deploydir)/sample.calculator
+
+BUILT_SOURCES = scagen
+
+noinst_HEADERS = *.h
+
+scagen:
+ java -jar $(TUSCANY_SCACPP)/bin/scagen.jar -dir . -output .
+
+composite_SCRIPTS = runwsserver.sh
+
+composite_LTLIBRARIES = libCalculator.la
+composite_DATA = *.composite *.componentType *.wsdl
+EXTRA_DIST = *.composite *.componentType *.wsdl runwsserver.sh
+
+dist_libCalculator_la_SOURCES = \
+CalculatorImpl.cpp \
+DivideImpl.cpp
+
+nodist_libCalculator_la_SOURCES = \
+CalculatorImpl_CalculatorService_Proxy.cpp \
+CalculatorImpl_CalculatorService_Wrapper.cpp \
+CalculatorImpl_divideService_Proxy.cpp \
+DivideImpl_DivideService_Proxy.cpp \
+DivideImpl_DivideService_Wrapper.cpp
+
+libCalculator_la_LIBADD = \
+-L${TUSCANY_SCACPP}/lib \
+ -ltuscany_sca \
+-L${TUSCANY_SCACPP}/extensions/cpp/lib \
+ -ltuscany_sca_cpp
+
+INCLUDES = \
+-I$(TUSCANY_SCACPP)/extensions/cpp/include \
+-I$(TUSCANY_SCACPP)/include \
+-I${TUSCANY_SDOCPP}/include
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.bat
new file mode 100644
index 0000000000..160152e6a9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.bat
@@ -0,0 +1,49 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %AXIS2C_HOME%\bin
+.\axis2_http_server.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.sh
new file mode 100755
index 0000000000..b94d841d66
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/runwsserver.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SCACPP/extensions/cpp/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+cd $AXIS2C_HOME/bin
+./axis2_http_server
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/sample.calculator.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/sample.calculator.composite
new file mode 100644
index 0000000000..ae4657b366
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Calculator/sample.calculator/sample.calculator.composite
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator">
+
+ <service name="CalculatorService">
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
+ <reference>CalculatorComponent/CalculatorService</reference>
+ </service>
+
+ <component name="CalculatorComponent">
+ <implementation.cpp library="Calculator" header="CalculatorImpl.h"/>
+ <reference name="divideService">DivideComponent/DivideService</reference>
+ </component>
+
+ <component name="DivideComponent">
+ <implementation.cpp library="Calculator" header="DivideImpl.h"/>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ChangeLog b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ChangeLog
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ChangeLog
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/GettingStarted.html b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/GettingStarted.html
new file mode 100644
index 0000000000..d151185171
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/GettingStarted.html
@@ -0,0 +1,133 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("../doc/css/maven-base.css");
+@import url("../doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA C++ Samples - Getting Started</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany Samples - Getting Started - SCA C++ Milestone release 2</H2>
+
+ <P>Tuscany SCA C++ includes a set of simple technology samples that demonstrates some of the functionality of
+ the Tuscany SCA C++ runtime. This page describes the samples and links to the documents that describe how to
+ build and run them
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="samples"><H2>Samples</H2></A>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="Calculator/README.html">Calculator</A>
+ </TD>
+ <TD>A very simple sample to show how an SCA composite can wire
+ together two C++ components to implement a Calculator service
+ and expose that service as a Web Service
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="PythonCalculator/README.html">PythonCalculator</A>
+ </TD>
+ <TD>A very simple sample to show how an SCA composite can wire
+ together two Python components to implement a Calculator service
+ and expose that service as a Web Service
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="RubyCalculator/README.html">RubyCalculator</A>
+ </TD>
+ <TD>A very simple sample to show how an SCA composite can wire
+ together two Ruby components to implement a Calculator service
+ and expose that service as a Web Service
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="BigBank/README.html">BigBank</A>
+ </TD>
+ <TD>A more complex sample that implements the "Simplified BigBank" scenario. A whitepaper describing
+ the scenario based on the SCA 0.9 Assembly specification can be found
+ <A HREF="http://www.osoa.org/display/Main/SCA+-+Previously+Published+Specifications">here</A>.
+ This sample uses multiple C++ components, calls out to an external Web Service via a reference,
+ exposes the service as a Web Service and also provides a PHP based client.
+ </TD>
+ </TR>
+ <TR CLASS="a">
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="RubyBank/README.html">RubyBank</A>
+ </TD>
+ <TD>A more complex sample that implements the "Simplified BigBank" scenario. This sample uses multiple
+ Ruby components, calls out to an external Web Service via a reference and exposes the service as a
+ Web Service.
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ <BR>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>The first place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+
+
+ <P>&nbsp;</P>
+
+ <P>&nbsp;</P>
+
+ <P>&nbsp;</P>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD>
+
+ <P>Thank you for your interest in Tuscany.</P> <STRONG><EM>-The
+ Tuscany Development Team</EM></STRONG>
+ </TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+
+ </DIV>
+
+</DIV>
+</BODY>
+
+</HTML>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/INSTALL b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/INSTALL
new file mode 100644
index 0000000000..3d7155367d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/INSTALL
@@ -0,0 +1,2 @@
+Please read the GettingStarted.html document for information on
+building, installing and running Tuscany SCA for C++ Samples \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/LICENSE b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/LICENSE
new file mode 100755
index 0000000000..f433b1a53f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Makefile.am
new file mode 100644
index 0000000000..bf35b2c21f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/Makefile.am
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+if WANT_ALL_SAMPLES
+ CPP_SAMPLES = Calculator BigBank
+ PYTHON_SAMPLES = PythonCalculator
+ RUBY_SAMPLES = RubyCalculator RubyBank
+endif
+if WANT_CPP_SAMPLES
+ CPP_SAMPLES = Calculator BigBank
+endif
+if WANT_PYTHON_SAMPLES
+ PYTHON_SAMPLES = PythonCalculator
+endif
+if WANT_RUBY_SAMPLES
+ RUBY_SAMPLES = RubyCalculator RubyBank
+endif
+if WANT_PHP_SAMPLES
+endif
+SUBDIRS = ${CPP_SAMPLES} ${PYTHON_SAMPLES} ${RUBY_SAMPLES} ${PHP_SAMPLES}
+
+EXTRA_DIST = GettingStarted.html
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/Makefile.am
new file mode 100644
index 0000000000..dd71fa8f83
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/Makefile.am
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+prgbindir=$(prefix)/samples/bin
+prgbin_PROGRAMS = MyValueClient
+
+MyValueClient_SOURCES = MyValueClient.cpp
+
+MyValueClient_LDADD = -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -lxml2
+
+INCLUDES = -I.. \
+ -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/MyValueClient.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/MyValueClient.cpp
new file mode 100755
index 0000000000..0919c539da
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Client/MyValueClient.cpp
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#pragma warning(disable: 4786)
+
+#include "commonj/sdo/Logger.h"
+#include "commonj/sdo/SDO.h"
+#include "commonj/sdo/HelperProvider.h"
+#include "osoa/sca/sca.h"
+#include "tuscany/sca/util/Logger.h"
+#include "tuscany/sca/util/Utils.h"
+#include <iostream>
+
+using namespace std;
+using namespace osoa::sca;
+using namespace tuscany::sca;
+using namespace commonj::sdo;
+using namespace tuscany::sca::ws;
+
+void usage();
+
+//
+// MyValueClient is a sample application that invokes operations on the
+// MyValueService Web Service.
+//
+int main(int argc, char* argv[])
+{
+
+ //
+ // Schema file for the types used by MyValueService
+ //
+ char *pszXSD;
+
+ //
+ // The WebService endpoint uri.
+ //
+ char *pszEndpoint;
+
+ //
+ // TargetNamespace
+ //
+ const char *pszTargetNamespace;
+
+ //
+ // SOAPAction
+ //
+ // Axis 1.5: SoapAction must be <serviceName>#<operationName>.
+ const char *pcszSoapAction = "MyValueService#getMyValue";
+
+ //
+ // Operation Name
+ //
+ const char *pcszOperationName = "getMyValue";
+
+ //
+ // Operation Response Name
+ //
+ const char *pcszOperationResponseName = "getMyValueResponse";
+
+
+ // Get the input parameters.
+ if (argc == 3)
+ {
+ // Schema file.
+ pszXSD = argv[1];
+ // Web Service endpoint.
+ pszEndpoint = argv[2];
+ }
+ else
+ {
+ usage();
+ }
+
+ // The current version of SDO does not support the embedded schema in the wsdl file,
+ // so we have to load an external schema.
+ XSDHelperPtr xsdHelper = HelperProvider::getXSDHelper();
+
+ try
+ {
+ cout << "define file: " << pszXSD <<endl;
+ pszTargetNamespace = xsdHelper->defineFile(pszXSD);
+ }
+ catch (SDORuntimeException ex)
+ {
+ cout << ex << endl;
+ exit(1);
+ }
+ cout << "define file done: " << pszTargetNamespace <<endl;
+
+
+ // Create an SDO for the request
+ DataFactoryPtr factory = xsdHelper->getDataFactory();
+ DataObjectPtr requestDO = 0;
+
+ try
+ {
+ // Create the root element for the operation and then add the parameters
+ // we need to invoke the operation.
+ requestDO = factory->create(pszTargetNamespace, pcszOperationName);
+ requestDO->setCString("customerID", "12345");
+ }
+ catch (SDORuntimeException e)
+ {
+ cout << "SDORuntimeException: " << e << endl;
+ exit(1);
+ }
+
+ //
+ // Create an SDOStub that will use the request SDO to invoke the operation.
+ //
+ SDOStub *stub = new SDOStub();
+ stub->setEndpoint(pszEndpoint);
+ stub->setOperationName(pcszOperationName);
+ stub->setTargetNamespace(pszTargetNamespace);
+ stub->setOperationResponseName(pcszOperationResponseName);
+ stub->setSoapAction(pcszSoapAction);
+ // DEBUG - Don't let the soap transport timeout while debugging.
+ stub->setTransportTimeout(0);
+ // DEBUG
+
+ try
+ {
+ // Invoke the operation.
+ DataObjectPtr responseDO = stub->invoke(requestDO, factory);
+ // Print the response.
+ if (responseDO != 0)
+ {
+ cout << "MyValueClient: response DataObject = " << endl;
+ Utils::printDO(responseDO);
+ cout << endl;
+ float fValue = responseDO->getFloat("myValue");
+ cout << "MyValueClient: myValue = " << fValue;
+ }
+ else
+ {
+ cout << "MyValueClient: MyValueService did not return a result" << endl;
+ }
+ }
+ catch (SDORuntimeException& e)
+ {
+ cout << "SDORuntimeException: " << e << endl;
+ }
+ catch (ServiceRuntimeException& e)
+ {
+ cout << "ServiceRuntimeException: " << e << endl;
+ }
+ catch(exception& e)
+ {
+ cout << "Exception: " << e.what() << endl;
+ }
+
+
+ return 0;
+}
+
+//
+// Print usage message.
+//
+void usage()
+{
+ cout << "MyValueClient.exe: Invoke operations on MyValueService Web Service" << endl;
+ cout << "Usage: MyValueClient XSD endpoint" << endl;
+ cout << "where XSD = path and name of XSD file that defines the MyValue types" << endl;
+ cout << " endpoint = web service endpoint" << endl;
+ exit(1);
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Makefile.am
new file mode 100644
index 0000000000..9f00a2ad9a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/Makefile.am
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = MyValueComposite Client
+
+deploy_dir = $(top_builddir)/samples/runtime
+deploy_composite = $(deploy_dir)/packages/MyValueComposite
+
+install-exec-local:
+ cp MyValueSubsystem/sca.subsystem $(deploy_dir)/configuration/MyValueSubsystem
+ cp MyValueComposite/sca.composite $(deploy_composite)
+ cp MyValueComposite/CustomerInfo.fragment $(deploy_composite)
+ cp MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType $(deploy_composite)/CustomerInfo
+ cp MyValueComposite/CustomerInfo/.libs/libCustomerInfo$libsuffix) $(deploy_composite)/CustomerInfo
+ cp MyValueComposite/CustomerInfo/CustomerInfo.h $(deploy_composite)/CustomerInfo
+ cp MyValueComposite/CustomerInfo/CustomerInfoImpl.h $(deploy_composite)/CustomerInfo
+ cp MyValueComposite/MyValue/MyValueImpl.componentType $(deploy_composite)/MyValue
+ cp MyValueComposite/MyValue/MyValue.h $(deploy_composite)/MyValue
+ cp MyValueComposite/MyValue/MyValueImpl.h $(deploy_composite)/MyValue
+ cp MyValueComposite/MyValue/MyValueService.wsdl $(deploy_composite)/MyValue
+ cp MyValueComposite/MyValue/.libs/libMyValue$libsuffix) $(deploy_composite)/MyValue
+ cp MyValueComposite/StockQuoteService/StockQuoteService.h $(deploy_composite)/StockQuoteService
+ cp MyValueComposite/StockQuoteService/StockQuoteService.wsdl $(deploy_composite)/StockQuoteService
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo.fragment
new file mode 100755
index 0000000000..2227f730dd
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo.fragment
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo/libCustomerInfo.so" header="CustomerInfo/CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfo.h
new file mode 100755
index 0000000000..61d3e18133
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfo.h
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+ virtual const char* getCustomerInformation(const char* customerID) = 0;
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType
new file mode 100755
index 0000000000..caed4c5327
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="CustomerInfo/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.cpp
new file mode 100755
index 0000000000..1a50dd4426
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.cpp
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "CustomerInfoImpl.h"
+#include <ostream>
+#include <string.h>
+#include "osoa/sca/sca.h"
+#include "commonj/sdo/DataObjectInstance.h"
+using namespace osoa::sca;
+using namespace commonj::sdo;
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CustomerInfoImpl::CustomerInfoImpl()
+{
+ cout << "Construct CustomerInfoImpl" << endl;
+
+}
+
+CustomerInfoImpl::~CustomerInfoImpl()
+{
+ cout << "Destroy CustomerInfoImpl" << endl;
+}
+
+//////////////////////////////////////////////////////////////////////
+// Other methods
+//////////////////////////////////////////////////////////////////////
+const char* CustomerInfoImpl::getCustomerInformation(const char* customerID)
+{
+ cout << "In getCustomerInformation with customerid: " << customerID << endl;
+
+
+
+ ComponentContext myContext = ComponentContext::getCurrent();
+
+ DataObjectInstance properties = myContext.getProperties();
+ DataObjectInstance props2 = properties;
+ if (properties)
+ {
+ const char* fredVal = properties->getCString("Fred");
+ cout << "Property Fred value: " << fredVal <<endl;
+
+
+ DataObjectList& joeList = properties->getList("Joe");
+ for (int i=0; i<joeList.size();i++)
+ {
+ cout << "Property Joe value " << i << ": " << joeList.getInteger(i) <<endl;
+ }
+ }
+
+ if (!strcmp("12345", customerID))
+ {
+ return "IBM";
+ }
+ else
+ {
+ throw "Wobbler";
+ }
+
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.h
new file mode 100755
index 0000000000..e2721ea03d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am
new file mode 100644
index 0000000000..7e74c0defe
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am
@@ -0,0 +1,32 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+lib_LTLIBRARIES = libCustomerInfo.la
+
+libCustomerInfo_la_SOURCES = \
+CustomerInfoImpl.cpp \
+CustomerInfoImpl_CustomerInfoService_Proxy.cpp \
+CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
+
+libCustomerInfo_la_LIBADD = -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo
+
+INCLUDES = -I.. \
+ -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
+
+install: \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/Makefile.am
new file mode 100644
index 0000000000..e13670bd01
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/Makefile.am
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = CustomerInfo MyValue
+
+BUILT_SOURCES = scagen
+
+scagen:
+ cd $(top_builddir)/bin && \
+ ./scagen.sh -dir $(prefix)/samples/MyValue/MyValueComposite -output $(prefix)/samples/MyValue/MyValueComposite
+ mv CustomerInfoImpl_* CustomerInfo
+ mv MyValueImpl_* MyValue
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am
new file mode 100644
index 0000000000..d695ed9db9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+lib_LTLIBRARIES = libMyValue.la
+
+libMyValue_la_SOURCES = \
+MyValueImpl.cpp \
+MyValueImpl_customerInfo_Proxy.cpp \
+MyValueImpl_MyValueService_Proxy.cpp \
+MyValueImpl_MyValueService_Wrapper.cpp \
+MyValueImpl_stockQuote_Proxy.cpp
+
+libMyValue_la_LIBADD = -L$(top_builddir)/runtime/core/src -ltuscany_sca \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo
+
+INCLUDES = -I.. \
+ -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
+
+install: \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValue.h
new file mode 100755
index 0000000000..615f62bde5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValue.h
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef MyValue_h
+#define MyValue_h
+
+#include "commonj/sdo/SDO.h"
+using commonj::sdo::DataObjectPtr;
+
+class MyValue
+{
+public:
+ virtual DataObjectPtr getMyValue(DataObjectPtr inDataObject) = 0;
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.componentType
new file mode 100755
index 0000000000..b03760247b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.componentType
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp header="MyValue/MyValue.h">
+ </interface.cpp>
+ </service>
+
+ <reference name="customerInfo">
+ <interface.cpp header="CustomerInfo/CustomerInfo.h">
+ </interface.cpp>
+ </reference>
+
+ <reference name="stockQuote">
+ <interface.cpp header="StockQuoteService/StockQuoteService.h">
+ </interface.cpp>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.cpp
new file mode 100755
index 0000000000..5c0d5506d3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.cpp
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+//
+// MyValueImpl.cpp: implementation of the MyValueImpl class.
+//
+
+#include "commonj/sdo/HelperProvider.h"
+#include "commonj/sdo/SDO.h"
+#include "osoa/sca/sca.h"
+#include "MyValueImpl.h"
+#include "CustomerInfo/CustomerInfo.h"
+#include "StockQuoteService/StockQuoteService.h"
+#include <iostream>
+
+using namespace std;
+using namespace osoa::sca;
+using namespace commonj::sdo;
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+MyValueImpl::MyValueImpl()
+{
+ cout << "Construct MyValueImpl" << endl;
+
+}
+
+MyValueImpl::~MyValueImpl()
+{
+ cout << "Destroy MyValueImpl" << endl;
+}
+
+//////////////////////////////////////////////////////////////////////
+// Other methods
+//////////////////////////////////////////////////////////////////////
+DataObjectPtr MyValueImpl::getMyValue(DataObjectPtr inDataObject)
+{
+ DataObjectPtr responseDO = 0;
+
+ string customerID = inDataObject->getCString("customerID");
+ cout << "In getMyValue with customerid: " << customerID << endl;
+
+ // Get the CustomerInfo service.
+ ComponentContext myContext = ComponentContext::getCurrent();
+ CustomerInfo* customerInfoService = (CustomerInfo*)myContext.getService("customerInfo");
+
+ if (customerInfoService == 0)
+ {
+ cout << "Unable to find customer info service" << endl;
+
+ return responseDO;
+ }
+
+ // Get the name of the stock for customer 'customerID' from the customerInfoService.
+ const char * stock;
+ try
+ {
+ stock = customerInfoService->getCustomerInformation(customerID.c_str());
+ }
+ catch(const char* x)
+ {
+ cout << "Exception caught: " << x <<endl;
+ throw;
+ }
+
+
+ // Check that we get the same stock back when iterating over the customerInfo services.
+ ServiceList serviceList = myContext.getServices("customerInfo");
+ for (int i=0; i<serviceList.size();i++)
+ {
+ CustomerInfo* service = (CustomerInfo*)(serviceList[i]);
+ stock = service->getCustomerInformation(customerID.c_str());
+ cout << "Stock from getServices " << i << " : " << stock <<endl;
+
+ }
+
+ // Use a second SCA reference to get the stock price for the customer's stock.
+ StockQuoteService* stockQuoteService = (StockQuoteService*)myContext.getService("stockQuote");
+
+ if (stockQuoteService == 0)
+ {
+ cout << "Unable to find stock quote service" << endl;
+
+ return responseDO;
+ }
+
+ // Create a data object representing the requests (use dynamic API until static is available)
+ DataObjectPtr stockQuoteRequestDO;
+ DataFactoryPtr factory;
+ try
+ {
+ // Create the request DO for the StockQuoteService.
+ factory = myContext.getDataFactory();
+ stockQuoteRequestDO = factory->create("http://swanandmokashi.com", "GetQuotes");
+ stockQuoteRequestDO->setCString("QuoteTicker", stock);
+
+ // Invoke the StockQuoteService
+ DataObjectPtr stockQuoteResponseDO = stockQuoteService->GetStockQuotes(stockQuoteRequestDO);
+
+ // DEBUG (Print the response from the StockQuoteService)
+ XMLHelperPtr xmlHelper = HelperProvider::getXMLHelper(factory);;
+ XMLDocumentPtr responseDoc =
+ xmlHelper->createDocument(stockQuoteResponseDO, "http://swanandmokashi.com", "GetQuotesResponse");
+ responseDoc->setXMLDeclaration(false);
+ char *responseXML = xmlHelper->save(responseDoc);
+ cout << "Response XML from StockQuoteService = " << endl;
+ cout << responseXML << endl;
+ cout << endl;
+ // DEBUG
+
+ // Create the MyValueService response DataObject using the results of the StockQuoteService.
+ responseDO = factory->create("http://www.myvalue.org/MyValueService/", "getMyValueResponse");
+ DataObjectPtr getQuotesResultDO = stockQuoteResponseDO->getDataObject("GetQuotesResult");
+ DataObjectList& quoteList = getQuotesResultDO->getList("Quote");
+ float fQuote = quoteList[0]->getFloat("StockQuote");
+
+ responseDO->setFloat("myValue", fQuote);
+ }
+ catch (SDORuntimeException sdoE)
+ {
+ cout << sdoE;
+ }
+
+ return responseDO;
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.h
new file mode 100755
index 0000000000..6380dac5e0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+class MyValueImpl : public MyValue
+{
+public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual DataObjectPtr getMyValue(DataObjectPtr inDataObject);
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.wsdl
new file mode 100755
index 0000000000..6ea196e311
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.wsdl
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.myvalue.org/MyValueService/"
+ targetNamespace="http://www.myvalue.org/MyValueService/">
+ <types>
+ <xs:schema targetNamespace="http://www.myvalue.org/MyValueService/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.myvalue.org/MyValueService/"
+ elementFormDefault="qualified">
+
+ <xs:element name="getMyValue">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="customerID" type="xs:string" minOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="getMyValueResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="myValue" type="xs:float" minOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </types>
+
+ <message name="getMyValueRequestMsg">
+ <part name="body" element="tns:getMyValue"/>
+ </message>
+
+ <message name="getMyValueResponseMsg">
+ <part name="body" element="tns:getMyValueResponse"/>
+ </message>
+
+ <portType name="MyValueServicePortType">
+ <operation name="getMyValue">
+ <input message="tns:getMyValueRequestMsg"/>
+ <output message="tns:getMyValueResponseMsg"/>
+ </operation>
+ </portType>
+
+ <binding name="MyValueServiceBinding" type="tns:MyValueServicePortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="getMyValue">
+ <soap:operation soapAction="MyValueService#getMyValue"/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+
+ <service name="MyValueService">
+ <port name="MyValueServicePort" binding="tns:MyValueServiceBinding">
+ <soap:address location="http://localhost/axis/MyValueService"/>
+ </port>
+ </service>
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.xsd
new file mode 100755
index 0000000000..ab2f25a826
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<xs:schema targetNamespace="http://www.myvalue.org/MyValueService/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.myvalue.org/MyValueService/"
+ elementFormDefault="qualified">
+
+ <xs:element name="getMyValue">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="customerID" type="xs:string" minOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="getMyValueResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="myValue" type="xs:float" minOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.h
new file mode 100755
index 0000000000..fda8a80e89
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.h
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef StockQuoteService_h
+#define StockQuoteService_h
+#include <string>
+#include "commonj/sdo/SDO.h"
+using std::string;
+class StockQuoteService
+{
+public:
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr request) = 0;
+
+};
+
+#endif // StockQuoteService_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.wsdl
new file mode 100755
index 0000000000..159d15c2d8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.wsdl
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:s="http://www.w3.org/2001/XMLSchema"
+ xmlns:s0="http://swanandmokashi.com"
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
+ xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+ targetNamespace="http://swanandmokashi.com"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <s:schema elementFormDefault="qualified"
+ targetNamespace="http://swanandmokashi.com"
+ xmlns:s="http://www.w3.org/2001/XMLSchema">
+ <s:element name="GetQuotes">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="QuoteTicker" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="GetQuotesResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="GetQuotesResult" type="s0:ArrayOfQuote" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:complexType name="ArrayOfQuote">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded"
+ name="Quote" type="s0:Quote" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="Quote">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="CompanyName" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="StockTicker" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="StockQuote" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="LastUpdated" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="Change"
+ type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="OpenPrice" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="DayHighPrice" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="DayLowPrice" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="Volume"
+ type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="MarketCap" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1"
+ name="YearRange" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ <s:element name="ArrayOfQuote" nillable="true"
+ type="s0:ArrayOfQuote" />
+ </s:schema>
+ </types>
+ <message name="GetQuotesSoapIn">
+ <part name="parameters" element="s0:GetQuotes" />
+ </message>
+ <message name="GetQuotesSoapOut">
+ <part name="parameters" element="s0:GetQuotesResponse" />
+ </message>
+ <message name="GetQuotesHttpGetIn">
+ <part name="QuoteTicker" type="s:string" />
+ </message>
+ <message name="GetQuotesHttpGetOut">
+ <part name="Body" element="s0:ArrayOfQuote" />
+ </message>
+ <message name="GetQuotesHttpPostIn">
+ <part name="QuoteTicker" type="s:string" />
+ </message>
+ <message name="GetQuotesHttpPostOut">
+ <part name="Body" element="s0:ArrayOfQuote" />
+ </message>
+ <portType name="StockQuotesSoap">
+ <operation name="GetStockQuotes">
+ <input name="GetQuotes" message="s0:GetQuotesSoapIn" />
+ <output name="GetQuotes" message="s0:GetQuotesSoapOut" />
+ </operation>
+ </portType>
+ <portType name="StockQuotesHttpGet">
+ <operation name="GetStockQuotes">
+ <input name="GetQuotes" message="s0:GetQuotesHttpGetIn" />
+ <output name="GetQuotes" message="s0:GetQuotesHttpGetOut" />
+ </operation>
+ </portType>
+ <portType name="StockQuotesHttpPost">
+ <operation name="GetStockQuotes">
+ <input name="GetQuotes" message="s0:GetQuotesHttpPostIn" />
+ <output name="GetQuotes" message="s0:GetQuotesHttpPostOut" />
+ </operation>
+ </portType>
+ <binding name="StockQuotesSoap" type="s0:StockQuotesSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+ style="document" />
+ <operation name="GetStockQuotes">
+ <soap:operation
+ soapAction="http://swanandmokashi.com/GetQuotes" style="document" />
+ <input name="GetQuotes">
+ <soap:body use="literal" />
+ </input>
+ <output name="GetQuotes">
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+ <binding name="StockQuotesHttpGet" type="s0:StockQuotesHttpGet">
+ <http:binding verb="GET" />
+ <operation name="GetStockQuotes">
+ <http:operation location="/GetQuotes" />
+ <input name="GetQuotes">
+ <http:urlEncoded />
+ </input>
+ <output name="GetQuotes">
+ <mime:mimeXml part="Body" />
+ </output>
+ </operation>
+ </binding>
+ <binding name="StockQuotesHttpPost" type="s0:StockQuotesHttpPost">
+ <http:binding verb="POST" />
+ <operation name="GetStockQuotes">
+ <http:operation location="/GetQuotes" />
+ <input name="GetQuotes">
+ <mime:content type="application/x-www-form-urlencoded" />
+ </input>
+ <output name="GetQuotes">
+ <mime:mimeXml part="Body" />
+ </output>
+ </operation>
+ </binding>
+ <service name="StockQuotes">
+ <port name="StockQuotesSoap" binding="s0:StockQuotesSoap">
+ <soap:address
+ location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
+ </port>
+ <port name="StockQuotesHttpGet"
+ binding="s0:StockQuotesHttpGet">
+ <http:address
+ location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
+ </port>
+ <port name="StockQuotesHttpPost"
+ binding="s0:StockQuotesHttpPost">
+ <http:address
+ location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
+ </port>
+ </service>
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/sca.composite
new file mode 100755
index 0000000000..52461c7650
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueComposite/sca.composite
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueService" multiplicity="1..1">
+ <interface.wsdl interface="MyValue/MyValueService.wsdl" callbackInterface=""></interface.wsdl>
+ <binding.ws endpoint="mvs:MyValueServiceBinding"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue/libMyValue.so" header="MyValue/MyValueImpl.h"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <externalService name="StockQuoteService">
+ <interface.cpp header="StockQuoteService/StockQuoteService.h"/>
+ <binding.ws endpoint="http://swanandmokashi.com#wsdl.endpoint(StockQuotes/StockQuotesSoap)"/>
+ </externalService>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueSubsystem/sca.subsystem b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueSubsystem/sca.subsystem
new file mode 100755
index 0000000000..7336b818b7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/MyValueSubsystem/sca.subsystem
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9"
+
+ name="MyValueSubsystem">
+
+ <compositeComponent name="MyValue" composite="MyValueComposite">
+
+ </compositeComponent>
+
+</subsystem>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/runMyValueClient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/runMyValueClient.sh
new file mode 100755
index 0000000000..6a8a60c490
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/runMyValueClient.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+export SCA4CPP_HOME="$APFULLDIR"
+if [ x$SCA4CPP = x ]; then
+export TUSCANY_SCACPP="$SCA4CPP_HOME"
+fi
+echo "Using SCA installed at $SCA4CPP_HOME"
+
+if [ x$AXISCPP_DEPLOY = x ]; then
+echo "AXISCPP_DEPLOY not set"
+exit;
+fi
+echo "Using Axis C++ installed at $AXISCPP_DEPLOY"
+
+if [ x$XERCES_DEPLOY = x ]; then
+echo "XERCES_DEPLOY not set"
+exit;
+fi
+echo "Using Xerces C++ installed at $XERCES_DEPLOY"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+TEST_ROOT=$SCA4CPP_HOME/runtime/core/test
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$LD_LIBRARY_PATH:$AXISCPP_DEPLOY/lib:$XERCES_DEPLOY/lib
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_ROOT/testSCASystem
+export TUSCANY_SCACPP_DEFAULT_COMPOSITE=SubSystem1
+
+cd $TUSCANY_SCACPP/bin/test
+./tuscany_sca_test
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/server.wsdd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/server.wsdd
new file mode 100755
index 0000000000..1a82ab85a7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/MyValue/server.wsdd
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<!-- The Entity, wspath in the following internal subset allows setting a path for the webservices location -->
+<!--<!DOCTYPE vars [ <!ENTITY wspath "/Apache2.0.54/Apache2/Axis/webservices/"> ]>-->
+
+<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/C" xmlns:CPP="http://xml.apache.org/axis/wsdd/providers/CPP">
+ <globalConfiguration>
+ </globalConfiguration>
+
+ <service name="MyValueService" provider="CPP:DOCUMENT" description="MyValueService">
+ <requestFlow>
+ <handler name="SCAWSHandler" type="C:\Apache2.0.54\Apache2\Axis\handlers\tuscany_sca_axis_handler.dll">
+ <parameter name="targetNamespace" value="http://www.myvalue.org/MyValueService/"/>
+ <parameter name="scaEntryPoint" value="MyValueSubsystem/MyValue/MyValueService"/>
+ </handler>
+ </requestFlow>
+
+ <parameter name="className" value="C:\Apache2.0.54\Apache2\Axis\webservices\tuscany_sca_axis_wrapper.dll"/>
+ <parameter name="allowedMethods" value="getMyValue "/>
+ </service>
+
+</deployment>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/NEWS b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/NEWS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/NEWS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/NOTICE b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/NOTICE
new file mode 100644
index 0000000000..bfb81409ad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/NOTICE
@@ -0,0 +1,2 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/) \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/Makefile.am
new file mode 100644
index 0000000000..5f234f1d65
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/Makefile.am
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/PythonCalculator/deploy
+SUBDIRS = sample.calculator sample.calculator.client sample.calculator.wsclient
+EXTRA_DIST = *.composite README.html
+deploy_DATA = *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README
new file mode 100644
index 0000000000..b9e787c768
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README
@@ -0,0 +1,24 @@
+Tuscany SCA for C++ Samples - Calculator Sample
+===============================================
+
+This is a very simple sample to show how an SCA composite can wire together
+two components to implement a Calculator service and expose that service as
+a Web Service.
+
+There are three sub projects in this workspace:
+ - sample.calculator
+ This contains the source code and SCDL artifacts for the SCA Calculator.
+ composite implementing the sample Calculator.
+
+ - sample.calculator.client
+ A sample client which does a local call to the Calculator service.
+
+ - sample.calculator.wsclient
+ A sample Axis2 Web Service client which calls the Calculator Web service.
+
+
+Additionally, there is the sample.calculator.solution.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
+
+See the README.html file for instructions to build and run this sample
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README.html b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README.html
new file mode 100644
index 0000000000..806c9cfc01
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/README.html
@@ -0,0 +1,256 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("../../doc/css/maven-base.css");
+@import url("../../doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ Samples - PythonCalculator Sample</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ Samples - PythonCalculator Sample</H2>
+
+ <P>This is a very simple sample to show how an SCA composite can wire
+ together two Python components to implement a Calculator service and expose
+ that service as a Web Service.
+ </P>
+ <P>See the <A HREF="../../doc/PythonExtension.html">Python extension</A>
+ documentation for information about building the Tuscany Python extension
+ and using Python in SCA composites.
+ </P>
+ <P>There are three sub projects in this workspace:</P>
+ <UL>
+ <LI>sample.calculator<BR/>
+ This contains the Python scripts and SCDL artifacts for the SCA Calculator
+ composite implementing the sample Calculator.
+ </LI>
+ <LI>sample.calculator.client<BR/>
+ A sample client which does a local call to the Calculator service.
+ </LI>
+ <LI>sample.calculator.wsclient<BR/>
+ A sample client which does a local call to a composite that contains a Web Service reference
+ that calls the Calculator Web Service.
+ </LI>
+ </UL>
+ <P>Additionally, there is the sample.calculator.solution.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#linuxbld">Building the Python samples on Linux</A></LI>
+ <LI><A HREF="#linuxrun">Running the PythonCalculator sample on Linux:</A></LI>
+ <UL>
+ <LI><A HREF="#linuxbasic">Running the basic client</A></LI>
+ <LI><A HREF="#linuxws">Running the Web Service client</A></LI>
+ </UL>
+ <LI><A HREF="#winbld">Building the PythonCalculator sample on Windows</A></LI>
+ <LI><A HREF="#winrun">Running the PythonCalculator sample on Windows:</A></LI>
+ <UL>
+ <LI><A HREF="#winbasic">Running the basic client</A></LI>
+ <LI><A HREF="#winws">Running the Web Service client</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="linuxbld"><H2>Building the Python samples on Linux</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;/samples - go directly to <A HREF="#linuxrun">Running the samples on Linux</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>As the PythonCalculator sample is based on Python scripts, a specific compilation step is not necessary -
+ only deployment is required. Deploy the Python samples only with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples</LI>
+ <LI>./configure --enable-python --enable-cpp=no --prefix=$TUSCANY_SCACPP</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide the --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/PythonCalculator</LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="linuxrun"><H2>Running the PythonCalculator sample on Linux</H2></A>
+ <A NAME="linuxbasic"><H3>PythonCalculator with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/PythonCalculator/deploy/sample.calculator.client</LI>
+ <LI>./runclient.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="linuxws"><H3>PythonCalculator with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/PythonCalculator/deploy/sample.calculator</LI>
+ <LI>./runwsserver.sh</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variable is required:
+ <UL>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/PythonCalculator/deploy/sample.calculator.wsclient</LI>
+ <LI>./runwsclient.sh</LI>
+ </OL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winbld"><H2>Building the PythonCalculator sample on Windows</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;\samples - go directly to <A HREF="#winrun">Running the samples on Windows</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>As this sample is based on Python scripts, a specific compilation step is not necessary -
+ only deployment is required. Deploy the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\PythonCalculator</LI>
+ <LI>deploy.cmd</LI>
+ </UL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winrun"><H2>Running the PythonCalculator sample on Windows</H2></A>
+ <A NAME="winbasic"><H3>PythonCalculator with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\PythonCalculator\deploy\sample.calculator.client</LI>
+ <LI>runclient.bat</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="winws"><H3>PythonCalculator with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\PythonCalculator\deploy\sample.calculator</LI>
+ <LI>runwsserver.bat</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\PythonCalculator\deploy\sample.calculator.wsclient</LI>
+ <LI>runwsclient.bat</LI>
+ </OL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/deploy.cmd
new file mode 100644
index 0000000000..7db890865a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/deploy.cmd
@@ -0,0 +1,57 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA sample.
+setlocal
+set currentPath=%~d0%~p0
+set sourcePath=%currentPath%
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set calcdir=%samplesdir%\PythonCalculator
+
+if . == %1. (
+set destinationPath=%calcdir%\deploy
+) ELSE (
+set destinationPath=%1
+)
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %calcdir% mkdir %calcdir%
+if not exist %destinationPath% mkdir %destinationPath%
+if not exist %destinationPath%\sample.calculator mkdir %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\*.componentType %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\*.composite %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\*.py %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\Calculator.wsdl %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\runwsserver.bat %destinationPath%\sample.calculator
+
+if not exist %destinationPath%\sample.calculator.client mkdir %destinationPath%\sample.calculator.client
+copy %sourcePath%\sample.calculator.client\calculator_client.py %destinationPath%\sample.calculator.client
+copy %sourcePath%\sample.calculator.client\runclient.bat %destinationPath%\sample.calculator.client
+
+if not exist %destinationPath%\sample.calculator.wsclient mkdir %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\calculator_wsclient.py %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\sample.calculator.wsclient.composite %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\Calculator.wsdl %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\runwsclient.bat %destinationPath%\sample.calculator.wsclient
+
+copy %sourcePath%\*.composite %destinationPath%
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am
new file mode 100644
index 0000000000..2f569db441
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/PythonCalculator/deploy
+clientdir=$(deploydir)/sample.calculator.client
+
+client_DATA = *.py
+client_SCRIPTS = runclient.sh
+EXTRA_DIST = runclient.sh *.py
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/calculator_client.py b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/calculator_client.py
new file mode 100644
index 0000000000..58d6f45606
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/calculator_client.py
@@ -0,0 +1,50 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+#
+#
+# This Python code is a simple sample that provides a Python
+# client for the Calculator sample
+
+
+import sys
+import sca
+
+op = sys.argv[1]
+val1 = sys.argv[2]
+val2 = sys.argv[3]
+
+# Locate the calculator service
+calc = sca.locateservice("CalculatorComponent")
+
+# Invoke the calculator operations
+if op == 'add':
+ result = calc.add(val1, val2)
+
+elif op == 'sub':
+ result = calc.sub(val1, val2)
+
+elif op == 'mul':
+ result = calc.mul(val1, val2)
+
+elif op == 'div':
+ result = calc.div(val1, val2)
+
+
+print "calculator_client: ",op,"(",val1,",",val2,") = ",result
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.bat
new file mode 100644
index 0000000000..d02d5fced8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.bat
@@ -0,0 +1,50 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\python\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+set PYTHONPATH=%TUSCANY_SCACPP%\extensions\python\bin
+
+cd %TUSCANY_SCACPP_SYSTEM_ROOT%\sample.calculator.client
+python calculator_client.py div 5 2
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.sh
new file mode 100755
index 0000000000..ced35b5f6b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.client/runclient.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SCACPP/extensions/python/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+export PYTHONPATH=$TUSCANY_SCACPP/extensions/python/lib:$PYTHONPATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+cd $TUSCANY_SCACPP_SYSTEM_ROOT/sample.calculator.client
+python calculator_client.py div 5 2
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.solution.composite
new file mode 100644
index 0000000000..0a8ae343db
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.solution.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.solution">
+
+ <component name="sample.calculator.CalculatorComponent">
+ <implementation.composite name="sample.calculator" />
+ </component>
+
+ <component name="sample.calculator.CalculatorWSClientComponent">
+ <implementation.composite name="sample.calculator.wsclient" />
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Calculator.wsdl
new file mode 100644
index 0000000000..f74c3d5c33
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Calculator.wsdl
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator"
+ targetNamespace="http://sample/calculator">
+ <types>
+ <xs:schema targetNamespace="http://sample/calculator"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator" elementFormDefault="qualified">
+
+ <xs:element name="add">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="mul">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="div">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="result">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="data" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </types>
+
+ <message name="addRequestMsg">
+ <part name="body" element="tns:add" />
+ </message>
+ <message name="subRequestMsg">
+ <part name="body" element="tns:sub" />
+ </message>
+ <message name="mulRequestMsg">
+ <part name="body" element="tns:mul" />
+ </message>
+ <message name="divRequestMsg">
+ <part name="body" element="tns:div" />
+ </message>
+
+ <message name="calculatorResponseMsg">
+ <part name="body" element="tns:result" />
+ </message>
+
+ <portType name="Calculator">
+ <operation name="add">
+ <input message="tns:addRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="sub">
+ <input message="tns:subRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="mul">
+ <input message="tns:mulRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="div">
+ <input message="tns:divRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ </portType>
+
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am
new file mode 100644
index 0000000000..931612432a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/PythonCalculator/deploy
+wsclientdir=$(deploydir)/sample.calculator.wsclient
+
+wsclient_DATA = *.py *.wsdl *.composite
+wsclient_SCRIPTS = runwsclient.sh
+EXTRA_DIST = runwsclient.sh *.py *.wsdl *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/calculator_wsclient.py b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/calculator_wsclient.py
new file mode 100644
index 0000000000..1ec1f66d83
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/calculator_wsclient.py
@@ -0,0 +1,50 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+#
+#
+# This Python code is a simple sample that provides a Python
+# client for the Calculator sample
+
+
+import sys
+import sca
+
+op = sys.argv[1]
+val1 = sys.argv[2]
+val2 = sys.argv[3]
+
+# Locate the calculator service
+calc = sca.locateservice("CalculatorService")
+
+# Invoke the calculator operations
+if op == 'add':
+ result = calc.add(val1, val2)
+
+elif op == 'sub':
+ result = calc.sub(val1, val2)
+
+elif op == 'mul':
+ result = calc.mul(val1, val2)
+
+elif op == 'div':
+ result = calc.div(val1, val2)
+
+
+print "calculator_wsclient: ",op,"(",val1,",",val2,") = ",result
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.bat
new file mode 100644
index 0000000000..dbcdf06313
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.bat
@@ -0,0 +1,50 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorWSClientComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\python\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+set PYTHONPATH=%TUSCANY_SCACPP%\extensions\python\bin
+
+cd %TUSCANY_SCACPP_SYSTEM_ROOT%\sample.calculator.wsclient
+python calculator_wsclient.py div 5 2
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.sh
new file mode 100755
index 0000000000..a02f607d08
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SCACPP/extensions/python/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+export PYTHONPATH=$TUSCANY_SCACPP/extensions/python/lib:$PYTHONPATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorWSClientComponent
+
+cd $TUSCANY_SCACPP_SYSTEM_ROOT/sample.calculator.wsclient
+python calculator_wsclient.py div 5 2
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite
new file mode 100644
index 0000000000..6ee1169645
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.wsclient">
+
+ <reference name="CalculatorService">
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws uri="http://localhost:9090/axis2/services/CalculatorService"/>
+ </reference>
+
+</composite> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Calculator.wsdl
new file mode 100644
index 0000000000..37529c06c5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Calculator.wsdl
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator"
+ targetNamespace="http://sample/calculator">
+ <types>
+ <xs:schema targetNamespace="http://sample/calculator"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator" elementFormDefault="qualified">
+
+ <xs:element name="add">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="mul">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="div">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="result">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="data" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </types>
+
+ <message name="addRequestMsg">
+ <part name="body" element="tns:add" />
+ </message>
+ <message name="subRequestMsg">
+ <part name="body" element="tns:sub" />
+ </message>
+ <message name="mulRequestMsg">
+ <part name="body" element="tns:mul" />
+ </message>
+ <message name="divRequestMsg">
+ <part name="body" element="tns:div" />
+ </message>
+
+ <message name="calculatorResponseMsg">
+ <part name="body" element="tns:result" />
+ </message>
+
+ <portType name="Calculator">
+ <operation name="add">
+ <input message="tns:addRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="sub">
+ <input message="tns:subRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="mul">
+ <input message="tns:mulRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="div">
+ <input message="tns:divRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ </portType>
+
+ <binding name="CalculatorBinding"
+ type="tns:Calculator">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="add">
+ <soap:operation soapAction="CalculatorService#add" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="sub">
+ <soap:operation soapAction="CalculatorService#sub" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="mul">
+ <soap:operation soapAction="CalculatorService#mul" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="div">
+ <soap:operation soapAction="CalculatorService#div" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+ <service name="CalculatorService">
+ <port name="CalculatorPort"
+ binding="tns:CalculatorBinding">
+ <soap:address location="http://localhost:9090/axis2/services/CalculatorService" />
+ </port>
+ </service>
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.componentType
new file mode 100644
index 0000000000..b54b4e22b1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.componentType
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="CalculatorService">
+ <interface.python/>
+ </service>
+
+ <reference name="divideService">
+ <interface.python/>
+ </reference>
+
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.py b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.py
new file mode 100644
index 0000000000..86dbef9e4d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.py
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+#
+#
+# This Python code is a simple sample that provides a Python implementation of
+# the Calculator sample
+#
+
+
+# The module-level add function
+def add(val1, val2):
+ result = float(val1) + float(val2)
+ print "Python - CalculatorImpl.add " + str(val1) + " + " + str(val2) + " = " + str(result)
+ return result
+
+# The module-level sub function
+def sub(val1, val2):
+ result = float(val1) - float(val2)
+ print "Python - CalculatorImpl.sub " + str(val1) + " - " + str(val2) + " = " + str(result)
+ return result
+
+# The module-level mul function
+def mul(val1, val2):
+ result = float(val1) * float(val2)
+ print "Python - CalculatorImpl.mul " + str(val1) + " * " + str(val2) + " = " + str(result)
+ return result
+
+# The module-level div function
+def div(val1, val2):
+
+
+ print "Python - CalculatorImpl.div calling divideService to determine " + str(val1) + " / " + str(val2)
+
+ # Use the divideService reference
+ result = divideService.divide(val1, val2)
+
+ print "Python - CalculatorImpl.div divideService returned " + str(result)
+
+ return result
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.componentType
new file mode 100644
index 0000000000..fa2938279a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.componentType
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <service name="DivideService">
+ <interface.python/>
+ </service>
+
+ <property name="doRounding" type="xsd:boolean"/>
+
+</componentType>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.py b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.py
new file mode 100644
index 0000000000..3921731de6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/DivideImpl.py
@@ -0,0 +1,65 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+#
+#
+# This Python code is a simple sample that provides a Python implementation of
+# the Divide Service used in the Calculator sample
+#
+# Either use the divide function in the DivideClass class (using classes allows
+# composite scoping to be used)
+# e.g. in CalculatorComposite.composite use the line:
+# <implementation.python module="DivideImpl" class="DivideClass"/>
+#
+# Or just use the module-level divide function
+# e.g. in CalculatorComposite.composite use the line:
+# <implementation.python module="DivideImpl" />
+#
+
+
+class DivideClass:
+ "A class to handle dividing"
+
+ def __init__(self):
+ print "Python - DivideImpl.DivideClass constructor"
+
+ # The class-level divide function
+ def divide(self, val1, val2):
+ result = float(val1) / float(val2)
+
+ print "Python - DivideImpl.DivideClass.divide " + str( val1 ) + " / " + str(val2) + " = " + str(result)
+
+ # Use the doRounding property
+ if doRounding:
+ result = round(result)
+ print "Python - DivideImpl.DivideClass.divide is rounding the result to " + str(result)
+
+ return result
+
+# The module-level divide function
+def divide(val1, val2):
+ result = float(val1) / float(val2)
+ print "Python - DivideImpl.divide " + str(val1) + " / " + str(val2) + " = " + str(result)
+
+ # Use the doRounding property
+ if doRounding:
+ result = round(result)
+ print "Python - DivideImpl.divide is rounding the result to " + str(result)
+
+ return result
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Makefile.am
new file mode 100644
index 0000000000..7c0cbd7b88
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/PythonCalculator/deploy
+compositedir=$(deploydir)/sample.calculator
+
+composite_DATA = *.composite *.componentType *.wsdl *.py
+composite_SCRIPTS = runwsserver.sh
+EXTRA_DIST = *.composite *.componentType *.wsdl *.py runwsserver.sh
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.bat
new file mode 100644
index 0000000000..2e5df325b2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.bat
@@ -0,0 +1,50 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\python\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+set PYTHONPATH=%TUSCANY_SCACPP%\extensions\python\bin
+
+cd %AXIS2C_HOME%\bin
+.\axis2_http_server.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.sh
new file mode 100755
index 0000000000..570a439b4f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/runwsserver.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SCACPP/extensions/python/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+export PYTHONPATH=$TUSCANY_SCACPP/extensions/python/lib:$PYTHONPATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+cd $AXIS2C_HOME/bin
+./axis2_http_server
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite
new file mode 100644
index 0000000000..caac112edf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator">
+
+ <service name="CalculatorService">
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
+ <reference>CalculatorComponent</reference>
+ </service>
+
+ <component name="CalculatorComponent">
+ <implementation.python module="CalculatorImpl" scope="composite"/>
+ <reference name="divideService">DivideComponent</reference>
+ </component>
+
+ <component name="DivideComponent">
+ <implementation.python module="DivideImpl" scope="composite"/>
+ <property name="doRounding">true</property>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/README
new file mode 100644
index 0000000000..3d7155367d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/README
@@ -0,0 +1,2 @@
+Please read the GettingStarted.html document for information on
+building, installing and running Tuscany SCA for C++ Samples \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/Makefile.am
new file mode 100644
index 0000000000..69b34906a1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/Makefile.am
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyBank/deploy
+SUBDIRS = bigbank.account bigbank.client
+EXTRA_DIST = *.composite README.html
+deploy_DATA = *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README
new file mode 100644
index 0000000000..266b66cc9a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README
@@ -0,0 +1,22 @@
+Tuscany SCA for C++ Samples - RubyBank Sample
+===============================================
+
+This sample implements the "Simplified BigBank" scenario. A whitepaper
+describing the scenario based on the SCA 0.9 Assembly specification can be
+found here. This sample uses multiple Ruby components, calls out to an
+external Web Service via a reference, exposes the service as a Web Service
+and also provides a PHP based client.
+
+There are two sub projects in this workspace:
+ - bigbank.account
+ This contains the source code and SCDL artifacts for the SCA BigBank
+ composite implementing the account services.
+
+ - bigbank.client
+ A sample client which does a local call to the BigBank service.
+
+Additionally, there is the bigbank.accountmanagement.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
+
+See the README.html file for instructions to build and run this sample
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README.html b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README.html
new file mode 100644
index 0000000000..0caf317bce
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/README.html
@@ -0,0 +1,239 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("../../doc/css/maven-base.css");
+@import url("../../doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ Samples - RubyBank Sample</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ Samples - RubyBank Sample</H2>
+
+ <P>This sample implements the "Simplified RubyBank" scenario. A whitepaper describing
+ the scenario based on the SCA 0.9 Assembly specification can be found
+ <A HREF="http://www.osoa.org/display/Main/SCA+-+Previously+Published+Specifications">here</A>.
+ This sample uses multiple Ruby components, calls out to an external Web Service via a reference
+ and exposes the service as a Web Service.
+ </P>
+ <P>There are two sub projects in this workspace:</P>
+ <UL>
+ <LI>bigbank.account<BR/>
+ This contains the source code and SCDL artifacts for the SCA RubyBank
+ composite implementing the account services.
+ </LI>
+ <LI>bigbank.client<BR/>
+ A sample client which does a local call to the RubyBank service.
+ </LI>
+ </UL>
+ <P>Additionally, there is the bigbank.accountmanagement.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#linuxbld">Building the C++ samples on Linux</A></LI>
+ <LI><A HREF="#linuxrun">Running the RubyBank sample on Linux:</A></LI>
+ <UL>
+ <LI><A HREF="#linuxbasic">Running the basic client</A></LI>
+ <LI><A HREF="#linuxws">Running with Web Service clients</A></LI>
+ </UL>
+ <LI><A HREF="#winbld">Building the RubyBank sample on Windows</A></LI>
+ <LI><A HREF="#winrun">Running the RubyBank sample on Windows:</A></LI>
+ <UL>
+ <LI><A HREF="#winbasic">Running the basic client</A></LI>
+ <LI><A HREF="#winws">Running with Web Service clients</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="linuxbld"><H2>Building the C++ samples on Linux</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;/samples - go directly to <A HREF="#linuxrun">Running the samples on Linux</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>As the RubyBank sample is based on Ruby scripts, a specific compilation step is not necessary -
+ only deployment is required. Deploy the Ruby samples only with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples</LI>
+ <LI>./configure --enable-ruby --enable-cpp=no --prefix=$TUSCANY_SCACPP</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide the --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/RubyBank
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="linuxrun"><H2>Running the RubyBank sample on Linux</H2></A>
+ <A NAME="linuxbasic"><H3>RubyBank with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.92&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/RubyBank/deploy/bigbank.client</LI>
+ <LI>./runclient.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="linuxws"><H3>RubyBank with Web Service clients</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/RubyBank/deploy/bigbank.account
+ </LI>
+ <LI>./runwsserver.sh</LI>
+ </OL>
+ </LI>
+ <LI>The Web Service client and PHP web client detailed in the
+ <A HREF="../BigBank/README.html">BigBank</A> sample can both be used
+ with the RubyBank service that is served by the Axis2C http server started above.
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winbld"><H2>Building the RubyBank sample on Windows</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;\samples - go directly to <A HREF="#winrun">Running the samples on Windows</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>As this sample is based on Ruby scripts, a specific compilation step is not necessary -
+ only deployment is required. Deploy the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyBank</LI>
+ <LI>deploy.cmd</LI>
+ </UL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winrun"><H2>Running the RubyBank sample on Windows</H2></A>
+ <A NAME="winbasic"><H3>RubyBank with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyBank\deploy\bigbank.client</LI>
+ <LI>runclient.bat</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="winws"><H3>RubyBank with Web Service clients</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyBank\deploy\bigbank.account
+ </LI>
+ <LI>runwsserver.bat</LI>
+ </OL>
+ </LI>
+ <LI>The Web Service client and PHP web client detailed in the
+ <A HREF="../BigBank/README.html">BigBank</A> sample can both be used
+ with the RubyBank service that is served by the Axis2C http server started above.
+ </LI>
+ </OL>
+ </DIV>
+
+
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at
+ <A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountDataServiceImpl.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountDataServiceImpl.rb
new file mode 100644
index 0000000000..8ae0e23bab
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountDataServiceImpl.rb
@@ -0,0 +1,72 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+require "rexml/document"
+include REXML
+
+class AccountDataServiceImpl
+
+ def initialize()
+ print "Ruby - AccountDataServiceImpl.initialize\n"
+ end
+
+ def getCheckingAccount(id)
+ print "Ruby - AccountDataServiceImpl.getCheckingAccount ", id, "\n"
+
+ result = Document.new <<-eof
+ <CheckingAccount xmlns="http://www.bigbank.com/AccountService"
+ xsi:type="CheckingAccount" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <accountNumber>#{ id.to_s + "_CHA12345"}</accountNumber>
+ <balance>1500.0</balance>
+ </CheckingAccount>
+ eof
+
+ return result
+ end
+
+ def getSavingsAccount(id)
+ print "Ruby - AccountDataServiceImpl.getSavingsAccount ", id, "\n"
+
+ result = Document.new <<-eof
+ <SavingsAccount xmlns="http://www.bigbank.com/AccountService"
+ xsi:type="SavingsAccount" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <accountNumber>#{ id.to_s + "_SAA12345"}</accountNumber>
+ <balance>1500.0</balance>
+ </SavingsAccount>
+ eof
+
+ return result
+ end
+
+ def getStockAccount(id)
+ print "Ruby - AccountDataServiceImpl.getStockAccount ", id, "\n"
+
+ result = Document.new <<-eof
+ <StockAccount xmlns="http://www.bigbank.com/AccountService"
+ xsi:type="StockAccount" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <accountNumber>#{ id.to_s + "_STA12345"}</accountNumber>
+ <symbol>IBM</symbol>
+ <quantity>100</quantity>
+ <balance></balance>
+ </StockAccount>
+ eof
+
+ return result
+ end
+
+end
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountService.wsdl
new file mode 100644
index 0000000000..cbfe180692
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountService.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://www.bigbank.com/AccountService"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.bigbank.com/AccountService"
+ name="AccountService">
+
+ <wsdl:types>
+ <xsd:schema
+ targetNamespace="http://www.bigbank.com/AccountService"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="getAccountReport">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="customerID"
+ type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="getAccountReportResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="result"
+ type="tns:AccountReport" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="AccountReport">
+ <xsd:sequence>
+ <xsd:element name="checking"
+ type="tns:CheckingAccount" maxOccurs="unbounded" />
+ <xsd:element name="savings"
+ type="tns:SavingsAccount" maxOccurs="unbounded" />
+ <xsd:element name="stocks" type="tns:StockAccount"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="StockAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="symbol" type="xsd:string" />
+ <xsd:element name="quantity" type="xsd:integer" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CheckingAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="SavingsAccount">
+ <xsd:sequence>
+ <xsd:element name="accountNumber" type="xsd:string" />
+ <xsd:element name="balance" type="xsd:float" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="getAccountReportRequest">
+ <wsdl:part element="tns:getAccountReport"
+ name="getAccountReportRequest" />
+ </wsdl:message>
+
+ <wsdl:message name="getAccountReportResponse">
+ <wsdl:part element="tns:getAccountReportResponse"
+ name="getAccountReportResponse" />
+ </wsdl:message>
+
+ <wsdl:portType name="AccountService">
+ <wsdl:operation name="getAccountReport">
+ <wsdl:input message="tns:getAccountReportRequest" />
+ <wsdl:output message="tns:getAccountReportResponse" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="AccountServiceSOAP" type="tns:AccountService">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getAccountReport">
+ <soap:operation
+ soapAction="http://www.bigbank.com/AccountService/getAccountReport" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="AccountService">
+ <wsdl:port binding="tns:AccountServiceSOAP"
+ name="AccountServiceSOAP">
+ <soap:address
+ location="http://localhost:9090/axis2/services/AccountService" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountServiceImpl.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountServiceImpl.rb
new file mode 100644
index 0000000000..a82b226a76
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/AccountServiceImpl.rb
@@ -0,0 +1,94 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+require "rexml/document"
+include REXML
+
+class AccountServiceImpl
+
+ attr_writer :accountDataService
+ attr_writer :stockQuoteService
+ attr_writer :currency
+
+ def initialize()
+ print "Ruby - AccountServiceImpl.initialize\n"
+ end
+
+ def getAccountReport(customerID)
+
+ checking = @accountDataService.getCheckingAccount(customerID)
+
+ savings = @accountDataService.getSavingsAccount(customerID)
+
+ stock = @accountDataService.getStockAccount(customerID);
+ symbol = stock.root.elements["symbol"].text
+ quantity = stock.root.elements["quantity"].text
+
+ price = @stockQuoteService.getQuote(symbol);
+
+ balance = fromUSDollarToCurrency(price.to_f * quantity.to_f)
+
+ report = Document.new <<-eof
+ <AccountReport xmlns="http://www.bigbank.com/AccountService"
+ xsi:type="AccountReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <checking>
+ <accountNumber>
+ #{ checking.root.elements["accountNumber"].text }
+ </accountNumber>
+ <balance>
+ #{ fromUSDollarToCurrency(checking.root.elements["balance"].text) }
+ </balance>
+ </checking>
+
+ <savings>
+ <accountNumber>
+ #{ savings.root.elements["accountNumber"].text }
+ </accountNumber>
+ <balance>
+ #{ fromUSDollarToCurrency(savings.root.elements["balance"].text) }
+ </balance>
+ </savings>
+
+ <stocks>
+ <accountNumber>
+ #{ stock.root.elements["accountNumber"].text }
+ </accountNumber>
+ <symbol>
+ #{ symbol }
+ </symbol>
+ <quantity>
+ #{ quantity }
+ </quantity>
+ <balance>
+ #{ balance }
+ </balance>
+ </stocks>
+
+ </AccountReport>
+ eof
+
+ return report
+ end
+
+ def fromUSDollarToCurrency(value)
+ return value.to_f * 0.8 if @currency == "EURO"
+ return value.to_f
+ end
+
+end
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/Makefile.am
new file mode 100644
index 0000000000..19059a004f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyBank/deploy
+compositedir=$(deploydir)/bigbank.account
+
+composite_SCRIPTS = runwsserver.sh
+
+composite_DATA = *.composite *.wsdl *.xsd *.rb
+EXTRA_DIST = *.composite *.wsdl *.xsd runwsserver.sh *.rb
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteServiceImpl.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteServiceImpl.rb
new file mode 100644
index 0000000000..c8bbe248a3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteServiceImpl.rb
@@ -0,0 +1,41 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+require "rexml/document"
+include REXML
+
+class StockQuoteServiceImpl
+
+ attr_writer :webService
+
+ def initialize()
+ print "Ruby - StockQuoteServiceImpl.initialize\n"
+ end
+
+ def getQuote(symbol)
+ print "Ruby - StockQuoteServiceImpl.getQuote ", symbol, "\n"
+
+ result = @webService.GetQuote(symbol)
+ doc = Document.new(result)
+
+ price = doc.root.elements["Stock"].elements["Last"].text;
+
+ return price.to_f
+ end
+
+end \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteTypes.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteTypes.xsd
new file mode 100644
index 0000000000..2f7012b5fb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteTypes.xsd
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="StockQuotes" type="tStockQuotes"/>
+ <xs:complexType name="tStockQuotes">
+ <xs:sequence>
+ <xs:element name="Stock" type="tStock" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##any" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:complexType name="tStock">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Symbol" type="xs:string"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Last" type="xs:float"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##any" processContents="lax"/>
+ </xs:complexType>
+</xs:schema> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteWebService.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteWebService.wsdl
new file mode 100644
index 0000000000..c14f97c87b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/StockQuoteWebService.wsdl
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:s="http://www.w3.org/2001/XMLSchema"
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:tns="http://www.webserviceX.NET/"
+ xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
+ xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+ targetNamespace="http://www.webserviceX.NET/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <s:schema elementFormDefault="qualified"
+ targetNamespace="http://www.webserviceX.NET/">
+ <s:element name="GetQuote">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="symbol" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+
+ </s:element>
+ <s:element name="GetQuoteResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1"
+ name="GetQuoteResult" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="string" nillable="true" type="s:string" />
+
+ </s:schema>
+ </wsdl:types>
+ <wsdl:message name="GetQuoteSoapIn">
+ <wsdl:part name="parameters" element="tns:GetQuote" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteSoapOut">
+ <wsdl:part name="parameters" element="tns:GetQuoteResponse" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpGetIn">
+
+ <wsdl:part name="symbol" type="s:string" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpGetOut">
+ <wsdl:part name="Body" element="tns:string" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpPostIn">
+ <wsdl:part name="symbol" type="s:string" />
+ </wsdl:message>
+ <wsdl:message name="GetQuoteHttpPostOut">
+
+ <wsdl:part name="Body" element="tns:string" />
+ </wsdl:message>
+ <wsdl:portType name="StockQuoteSoap">
+ <wsdl:operation name="GetQuote">
+ <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
+ Get Stock quote for a company Symbol
+ </documentation>
+ <wsdl:input message="tns:GetQuoteSoapIn" />
+ <wsdl:output message="tns:GetQuoteSoapOut" />
+ </wsdl:operation>
+
+ </wsdl:portType>
+ <wsdl:portType name="StockQuoteHttpGet">
+ <wsdl:operation name="GetQuote">
+ <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
+ Get Stock quote for a company Symbol
+ </documentation>
+ <wsdl:input message="tns:GetQuoteHttpGetIn" />
+ <wsdl:output message="tns:GetQuoteHttpGetOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:portType name="StockQuoteHttpPost">
+ <wsdl:operation name="GetQuote">
+ <documentation xmlns="http://schemas.xmlsoap.org/wsdl/">
+ Get Stock quote for a company Symbol
+ </documentation>
+ <wsdl:input message="tns:GetQuoteHttpPostIn" />
+ <wsdl:output message="tns:GetQuoteHttpPostOut" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="StockQuoteSoap" type="tns:StockQuoteSoap">
+
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
+ style="document" />
+ <wsdl:operation name="GetQuote">
+ <soap:operation
+ soapAction="http://www.webserviceX.NET/GetQuote" style="document" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="StockQuoteHttpGet"
+ type="tns:StockQuoteHttpGet">
+ <http:binding verb="GET" />
+ <wsdl:operation name="GetQuote">
+ <http:operation location="/GetQuote" />
+ <wsdl:input>
+ <http:urlEncoded />
+ </wsdl:input>
+
+ <wsdl:output>
+ <mime:mimeXml part="Body" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="StockQuoteHttpPost"
+ type="tns:StockQuoteHttpPost">
+ <http:binding verb="POST" />
+ <wsdl:operation name="GetQuote">
+ <http:operation location="/GetQuote" />
+
+ <wsdl:input>
+ <mime:content type="application/x-www-form-urlencoded" />
+ </wsdl:input>
+ <wsdl:output>
+ <mime:mimeXml part="Body" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="StockQuote">
+
+ <wsdl:port name="StockQuoteSoap" binding="tns:StockQuoteSoap">
+ <soap:address
+ location="http://www.webservicex.net/stockquote.asmx" />
+ </wsdl:port>
+ <wsdl:port name="StockQuoteHttpGet"
+ binding="tns:StockQuoteHttpGet">
+ <http:address
+ location="http://www.webservicex.net/stockquote.asmx" />
+ </wsdl:port>
+ <wsdl:port name="StockQuoteHttpPost"
+ binding="tns:StockQuoteHttpPost">
+ <http:address
+ location="http://www.webservicex.net/stockquote.asmx" />
+ </wsdl:port>
+
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/bigbank.account.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/bigbank.account.composite
new file mode 100644
index 0000000000..96f0bd652f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/bigbank.account.composite
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="bigbank.account">
+
+ <service name="AccountService">
+ <interface.wsdl interface="http://www.bigbank.com/AccountService#wsdl.interface(AccountService)"/>
+ <!-- The endpoint is optional -->
+ <!-- <binding.ws endpoint="http://www.bigbank.com/AccountService#wsdl.endpoint(AccountService/AccountServiceSOAP)"/> -->
+ <binding.ws/>
+ <reference>AccountServiceComponent</reference>
+ </service>
+
+ <component name="AccountServiceComponent">
+ <implementation.ruby script="AccountServiceImpl.rb" class="AccountServiceImpl"/>
+ <reference name="accountDataService">AccountDataServiceComponent</reference>
+ <reference name="stockQuoteService">StockQuoteServiceComponent</reference>
+ <property name="currency">EURO</property>
+ </component>
+
+ <component name="AccountDataServiceComponent">
+ <implementation.ruby script="AccountDataServiceImpl.rb" class="AccountDataServiceImpl"/>
+ </component>
+
+ <component name="StockQuoteServiceComponent">
+ <implementation.ruby script="StockQuoteServiceImpl.rb" class="StockQuoteServiceImpl"/>
+ <reference name="webService">StockQuoteWebService</reference>
+ </component>
+
+ <reference name="StockQuoteWebService">
+ <interface.wsdl interface="http://www.webserviceX.NET/#wsdl.interface(StockQuoteSoap)"/>
+ <binding.ws endpoint="http://www.webserviceX.NET/#wsdl.endpoint(StockQuote/StockQuoteSoap)"/>
+ </reference>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.bat
new file mode 100644
index 0000000000..f95d5136ef
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.bat
@@ -0,0 +1,51 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo Using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo Using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%
+
+set APFULLDIR=%~d0%~p0
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+rem Run the client
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %AXIS2C_HOME%\bin
+.\axis2_http_server.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.sh
new file mode 100755
index 0000000000..eb20a3d670
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.account/runwsserver.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/extensions/cpp/lib:$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+cd $AXIS2C_HOME/bin
+./axis2_http_server
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.accountmanagement.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.accountmanagement.composite
new file mode 100644
index 0000000000..f5f0bbbb57
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.accountmanagement.composite
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="bigbank.accountmanagement">
+
+ <component name="bigbank.AccountManagementComponent">
+ <implementation.composite name="bigbank.account"/>
+ </component>
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/AccountClient.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/AccountClient.rb
new file mode 100644
index 0000000000..731c77c9ce
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/AccountClient.rb
@@ -0,0 +1,26 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+require("tuscany_sca_ruby")
+
+accountService = SCA::locateService("AccountServiceComponent")
+
+report = accountService.getAccountReport(1234)
+
+print report
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/Makefile.am
new file mode 100644
index 0000000000..a289a22914
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyBank/deploy
+clientdir=$(deploydir)/bigbank.client
+
+client_DATA = *.rb
+client_SCRIPTS = runclient.sh
+EXTRA_DIST = runclient.sh *.rb
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.bat
new file mode 100644
index 0000000000..f50bc2aa2d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.bat
@@ -0,0 +1,51 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo Using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo Using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%
+
+set APFULLDIR=%~d0%~p0
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+rem Run the client
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %TUSCANY_SCACPP_SYSTEM_ROOT%\bigbank.client
+ruby -I%TUSCANY_SCACPP%\extensions\ruby\bin AccountClient.rb
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.sh
new file mode 100755
index 0000000000..7ed579d393
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/bigbank.client/runclient.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=bigbank.AccountManagementComponent
+
+cd $TUSCANY_SCACPP_SYSTEM_ROOT/bigbank.client
+ruby -I$TUSCANY_SCACPP/extensions/ruby/lib AccountClient.rb
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/deploy.cmd
new file mode 100644
index 0000000000..59b797e564
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyBank/deploy.cmd
@@ -0,0 +1,53 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA sample.
+setlocal
+set currentPath=%~d0%~p0
+set sourcePath=%currentPath%
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set bbdir=%samplesdir%\RubyBank
+
+
+if . == %1. (
+set destinationPath=%bbdir%\deploy
+) ELSE (
+set destinationPath=%1
+)
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %bbdir% mkdir %bbdir%
+if not exist %destinationPath% mkdir %destinationPath%
+if not exist %destinationPath%\bigbank.account mkdir %destinationPath%\bigbank.account
+if not exist %destinationPath%\bigbank.client mkdir %destinationPath%\bigbank.client
+
+copy %sourcePath%\bigbank.account\*.rb %destinationPath%\bigbank.account
+copy %sourcePath%\bigbank.account\*.composite %destinationPath%\bigbank.account
+copy %sourcePath%\bigbank.account\*.wsdl %destinationPath%\bigbank.account
+copy %sourcePath%\bigbank.account\*.xsd %destinationPath%\bigbank.account
+copy %sourcePath%\bigbank.account\*.bat %destinationPath%\bigbank.account
+
+copy %sourcePath%\bigbank.client\*.rb %destinationPath%\bigbank.client
+copy %sourcePath%\bigbank.client\*.bat %destinationPath%\bigbank.client
+
+copy %sourcePath%\*.composite %destinationPath%
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/Makefile.am
new file mode 100644
index 0000000000..e111e518cf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/Makefile.am
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyCalculator/deploy
+SUBDIRS = sample.calculator sample.calculator.client sample.calculator.wsclient
+EXTRA_DIST = *.composite README.html
+deploy_DATA = *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README
new file mode 100644
index 0000000000..4104ff46b6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README
@@ -0,0 +1,23 @@
+Tuscany SCA for C++ Samples - Calculator Sample
+===============================================
+
+This is a very simple sample to show how an SCA composite can wire together
+two components to implement a Calculator service and expose that service as
+a Web Service.
+
+There are three sub projects in this workspace:
+ - sample.calculator
+ This contains the source code and SCDL artifacts for the SCA Calculator.
+ composite implementing the sample Calculator.
+
+ - sample.calculator.client
+ A sample client which does a local call to the Calculator service.
+
+ - sample.calculator.wsclient
+ A sample Axis2 Web Service client which calls the Calculator Web service.
+
+Additionally, there is the sample.calculator.solution.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
+
+See the README.html file for instructions to build and run this sample
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README.html b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README.html
new file mode 100644
index 0000000000..ab9829741a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/README.html
@@ -0,0 +1,253 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("../../doc/css/maven-base.css");
+@import url("../../doc/css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ Samples - RubyCalculator Sample</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ Samples - RubyCalculator Sample</H2>
+
+ <P>This is a very simple sample to show how an SCA composite can wire
+ together two Ruby components to implement a Calculator service and expose
+ that service as a Web Service.
+ </P>
+ <P>There are three sub projects in this workspace:</P>
+ <UL>
+ <LI>sample.calculator<BR/>
+ This contains the Ruby scripts and SCDL artifacts for the SCA Calculator
+ composite implementing the sample Calculator.
+ </LI>
+ <LI>sample.calculator.client<BR/>
+ A sample client which does a local call to the Calculator service.
+ </LI>
+ <LI>sample.calculator.wsclient<BR/>
+ A sample client which does a local call to a composite that contains a Web Service reference
+ that calls the Calculator Web Service.
+ </LI>
+ </UL>
+ <P>Additionally, there is the sample.calculator.solution.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#linuxbld">Building the Ruby samples on Linux</A></LI>
+ <LI><A HREF="#linuxrun">Running the RubyCalculator sample on Linux:</A></LI>
+ <UL>
+ <LI><A HREF="#linuxbasic">Running the basic client</A></LI>
+ <LI><A HREF="#linuxws">Running the Web Service client</A></LI>
+ </UL>
+ <LI><A HREF="#winbld">Building the RubyCalculator sample on Windows</A></LI>
+ <LI><A HREF="#winrun">Running the RubyCalculator sample on Windows:</A></LI>
+ <UL>
+ <LI><A HREF="#winbasic">Running the basic client</A></LI>
+ <LI><A HREF="#winws">Running the Web Service client</A></LI>
+ </UL>
+ <LI><A HREF="#help">Getting help</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="linuxbld"><H2>Building the Ruby samples on Linux</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;/samples - go directly to <A HREF="#linuxrun">Running the samples on Linux</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>As the RubyCalculator sample is based on Ruby scripts, a specific compilation step is not necessary -
+ only deployment is required. Deploy the Ruby samples only with the following command sequence:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples</LI>
+ <LI>./configure --enable-ruby --enable-cpp=no --prefix=$TUSCANY_SCACPP</LI>
+ <LI>make install</LI>
+ </UL>
+ NOTE: If you don't provide the --prefix configure option, it will by default install into
+ /usr/local/tuscany/sca/samples/RubyCalculator</LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="linuxrun"><H2>Running the RubyCalculator sample on Linux</H2></A>
+ <A NAME="linuxbasic"><H3>RubyCalculator with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/RubyCalculator/deploy/sample.calculator.client</LI>
+ <LI>./runclient.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="linuxws"><H3>RubyCalculator with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/RubyCalculator/deploy/sample.calculator</LI>
+ <LI>./runwsserver.sh</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variable is required:
+ <UL>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;/samples/RubyCalculator/deploy/sample.calculator.wsclient</LI>
+ <LI>./runwsclient.sh</LI>
+ </OL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winbld"><H2>Building the RubyCalculator sample on Windows</H2></A>
+ <P>If using the binary distribution the samples are built and installed in
+ &lt;tuscany_sca_install_dir&gt;\samples - go directly to <A HREF="#winrun">Running the samples on Windows</A>.</P>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL></LI>
+ </LI>
+ <LI>As this sample is based on Ruby scripts, a specific compilation step is not necessary -
+ only deployment is required. Deploy the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyCalculator</LI>
+ <LI>deploy.cmd</LI>
+ </UL>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="winrun"><H2>Running the RubyCalculator sample on Windows</H2></A>
+ <A NAME="winbasic"><H3>RubyCalculator with basic client</H3></A>
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>Run the sample with the following commands:
+ <UL>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyCalculator\deploy\sample.calculator.client</LI>
+ <LI>runclient.bat</LI>
+ </UL>
+ </LI>
+ </OL>
+ <A NAME="winws"><H3>RubyCalculator with Web Service client</H3></A>
+ <OL>
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../doc/Axis2CWSService.html">here</A>.
+ </LI>
+ <LI>Start the Axis2C simple http server:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyCalculator\deploy\sample.calculator</LI>
+ <LI>runwsserver.bat</LI>
+ </OL>
+ </LI>
+ <LI>Run the client:
+ <OL>
+ <LI>The following environment variables are required:
+ <UL>
+ <LI>TUSCANY_SCACPP=&lt;path to installed Tuscany SCA&gt;</LI>
+ <LI>TUSCANY_SDOCPP=&lt;path to installed Tuscany SDO&gt;</LI>
+ <LI>AXIS2C_HOME=&lt;path to axis2c version 0.94&gt;</LI>
+ </UL>
+ </LI>
+ <LI>cd &lt;tuscany_sca_install_dir&gt;\samples\RubyCalculator\deploy\sample.calculator.wsclient</LI>
+ <LI>runwsclient.bat</LI>
+ </OL>
+ </LI>
+ </OL>
+ </DIV>
+
+
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at&nbsp;<A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/deploy.cmd
new file mode 100644
index 0000000000..2609c3b1e5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/deploy.cmd
@@ -0,0 +1,56 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA sample.
+setlocal
+set currentPath=%~d0%~p0
+set sourcePath=%currentPath%
+
+set deploydir=%TUSCANY_SCACPP%
+set samplesdir=%deploydir%\samples
+set calcdir=%samplesdir%\RubyCalculator
+
+if . == %1. (
+set destinationPath=%calcdir%\deploy
+) ELSE (
+set destinationPath=%1
+)
+
+if not exist %samplesdir% mkdir %samplesdir%
+if not exist %calcdir% mkdir %calcdir%
+if not exist %destinationPath% mkdir %destinationPath%
+if not exist %destinationPath%\sample.calculator mkdir %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\*.composite %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\*.rb %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\Calculator.wsdl %destinationPath%\sample.calculator
+copy %sourcePath%\sample.calculator\runwsserver.bat %destinationPath%\sample.calculator
+
+if not exist %destinationPath%\sample.calculator.client mkdir %destinationPath%\sample.calculator.client
+copy %sourcePath%\sample.calculator.client\CalculatorClient.rb %destinationPath%\sample.calculator.client
+copy %sourcePath%\sample.calculator.client\runclient.bat %destinationPath%\sample.calculator.client
+
+if not exist %destinationPath%\sample.calculator.wsclient mkdir %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\CalculatorWSClient.rb %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\sample.calculator.wsclient.composite %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\Calculator.wsdl %destinationPath%\sample.calculator.wsclient
+copy %sourcePath%\sample.calculator.wsclient\runwsclient.bat %destinationPath%\sample.calculator.wsclient
+
+copy %sourcePath%\*.composite %destinationPath%
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/CalculatorClient.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/CalculatorClient.rb
new file mode 100644
index 0000000000..253928df0c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/CalculatorClient.rb
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+require("tuscany_sca_ruby")
+
+calculator = SCA::locateService("CalculatorComponent")
+
+x = calculator.div(5, 2)
+print x, "\n"
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am
new file mode 100644
index 0000000000..536a5f1072
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyCalculator/deploy
+clientdir=$(deploydir)/sample.calculator.client
+
+client_DATA = *.rb
+client_SCRIPTS = runclient.sh
+EXTRA_DIST = runclient.sh *.rb
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.bat
new file mode 100644
index 0000000000..4e9cc0f2cd
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.bat
@@ -0,0 +1,49 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %TUSCANY_SCACPP_SYSTEM_ROOT%\sample.calculator.client
+ruby -I%TUSCANY_SCACPP%\extensions\ruby\bin CalculatorClient.rb
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.sh
new file mode 100755
index 0000000000..974dd2e41c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.client/runclient.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+cd $TUSCANY_SCACPP_SYSTEM_ROOT/sample.calculator.client
+ruby -I$TUSCANY_SCACPP/extensions/ruby/lib CalculatorClient.rb
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.solution.composite
new file mode 100644
index 0000000000..0a8ae343db
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.solution.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.solution">
+
+ <component name="sample.calculator.CalculatorComponent">
+ <implementation.composite name="sample.calculator" />
+ </component>
+
+ <component name="sample.calculator.CalculatorWSClientComponent">
+ <implementation.composite name="sample.calculator.wsclient" />
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Calculator.wsdl
new file mode 100644
index 0000000000..f74c3d5c33
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Calculator.wsdl
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator"
+ targetNamespace="http://sample/calculator">
+ <types>
+ <xs:schema targetNamespace="http://sample/calculator"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator" elementFormDefault="qualified">
+
+ <xs:element name="add">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="mul">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="div">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="result">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="data" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </types>
+
+ <message name="addRequestMsg">
+ <part name="body" element="tns:add" />
+ </message>
+ <message name="subRequestMsg">
+ <part name="body" element="tns:sub" />
+ </message>
+ <message name="mulRequestMsg">
+ <part name="body" element="tns:mul" />
+ </message>
+ <message name="divRequestMsg">
+ <part name="body" element="tns:div" />
+ </message>
+
+ <message name="calculatorResponseMsg">
+ <part name="body" element="tns:result" />
+ </message>
+
+ <portType name="Calculator">
+ <operation name="add">
+ <input message="tns:addRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="sub">
+ <input message="tns:subRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="mul">
+ <input message="tns:mulRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="div">
+ <input message="tns:divRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ </portType>
+
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/CalculatorWSClient.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/CalculatorWSClient.rb
new file mode 100644
index 0000000000..4022f8a636
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/CalculatorWSClient.rb
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+require("tuscany_sca_ruby")
+
+calculator = SCA::locateService("CalculatorService")
+
+x = calculator.div(5, 2)
+print x, "\n"
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am
new file mode 100644
index 0000000000..baef3cbb92
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyCalculator/deploy
+wsclientdir=$(deploydir)/sample.calculator.wsclient
+
+wsclient_DATA = *.rb *.wsdl *.composite
+wsclient_SCRIPTS = runwsclient.sh
+EXTRA_DIST = runwsclient.sh *.rb *.wsdl *.composite
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.bat
new file mode 100644
index 0000000000..f9a1ad62a7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.bat
@@ -0,0 +1,49 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorWSClientComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %TUSCANY_SCACPP_SYSTEM_ROOT%\sample.calculator.wsclient
+ruby -I%TUSCANY_SCACPP%\extensions\ruby\bin CalculatorWSClient.rb
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.sh
new file mode 100755
index 0000000000..ec4053fb74
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorWSClientComponent
+
+cd $TUSCANY_SCACPP_SYSTEM_ROOT/sample.calculator.wsclient
+ruby -I$TUSCANY_SCACPP/extensions/ruby/lib CalculatorWSClient.rb
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite
new file mode 100644
index 0000000000..22d31b539c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.wsclient">
+
+ <reference name="CalculatorService">
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws uri="http://localhost:9090/axis2/services/CalculatorService"/>
+ </reference>
+
+</composite> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Calculator.wsdl
new file mode 100644
index 0000000000..f74c3d5c33
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Calculator.wsdl
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator"
+ targetNamespace="http://sample/calculator">
+ <types>
+ <xs:schema targetNamespace="http://sample/calculator"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sample/calculator" elementFormDefault="qualified">
+
+ <xs:element name="add">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="sub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="mul">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="div">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="param1" type="xs:float"/>
+ <xs:element name="param2" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="result">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="data" type="xs:float"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:schema>
+ </types>
+
+ <message name="addRequestMsg">
+ <part name="body" element="tns:add" />
+ </message>
+ <message name="subRequestMsg">
+ <part name="body" element="tns:sub" />
+ </message>
+ <message name="mulRequestMsg">
+ <part name="body" element="tns:mul" />
+ </message>
+ <message name="divRequestMsg">
+ <part name="body" element="tns:div" />
+ </message>
+
+ <message name="calculatorResponseMsg">
+ <part name="body" element="tns:result" />
+ </message>
+
+ <portType name="Calculator">
+ <operation name="add">
+ <input message="tns:addRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="sub">
+ <input message="tns:subRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="mul">
+ <input message="tns:mulRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ <operation name="div">
+ <input message="tns:divRequestMsg" />
+ <output message="tns:calculatorResponseMsg" />
+ </operation>
+ </portType>
+
+</definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/CalculatorImpl.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/CalculatorImpl.rb
new file mode 100644
index 0000000000..36ed15ff9b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/CalculatorImpl.rb
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+class CalculatorImpl
+
+ attr_writer :divideService
+
+ def initialize()
+ print "Ruby - CalculatorImpl.initialize\n"
+ end
+
+ def div(arg1, arg2)
+ print "Ruby - CalculatorImpl.div\n"
+ @divideService.divide(arg1.to_f, arg2.to_f)
+ end
+
+ def add(arg1, arg2)
+ print "Ruby - CalculatorImpl.add\n"
+ arg1.to_f + arg2.to_f
+ end
+
+ def sub(arg1, arg2)
+ print "Ruby - CalculatorImpl.sub\n"
+ arg1.to_f - arg2.to_f
+ end
+
+ def mul(arg1, arg2)
+ print "Ruby - CalculatorImpl.mul\n"
+ arg1.to_f * arg2.to_f
+ end
+
+end \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb
new file mode 100644
index 0000000000..c6615bfcfa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+class DivideImpl
+
+ attr_writer :round
+
+ def initialize()
+ print "Ruby - DivideImpl.initialize\n"
+ end
+
+ def divide(arg1, arg2)
+ print "Ruby - DivideImpl.divide ", arg1, " / ", arg2, "\n"
+ res = arg1.to_f / arg2.to_f
+ if @round then
+ res = res.round
+ print "DivideImpl.divide rounding\n"
+ end
+ print "DivideImpl.divide ", res, "\n"
+ res
+ end
+
+end \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Makefile.am
new file mode 100644
index 0000000000..2508e53093
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/Makefile.am
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/samples/RubyCalculator/deploy
+compositedir=$(deploydir)/sample.calculator
+
+composite_SCRIPTS = runwsserver.sh
+
+composite_DATA = *.composite *.wsdl *.rb
+EXTRA_DIST = *.composite *.wsdl *.rb runwsserver.sh
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.bat
new file mode 100644
index 0000000000..9870d4600d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.bat
@@ -0,0 +1,49 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %AXIS2C_HOME%\bin
+.\axis2_http_server.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.sh
new file mode 100755
index 0000000000..69906579b2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/runwsserver.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
+
+cd $AXIS2C_HOME/bin
+./axis2_http_server
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
new file mode 100644
index 0000000000..90f68e8234
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator">
+
+ <service name="CalculatorService">
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
+ <reference>CalculatorComponent</reference>
+ </service>
+
+ <component name="CalculatorComponent">
+ <implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/>
+ <reference name="divideService">DivideComponent</reference>
+ </component>
+
+ <component name="DivideComponent">
+ <implementation.ruby script="DivideImpl.rb" class="DivideImpl"/>
+ <property name="round">true</property>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo.solution.composite
new file mode 100644
index 0000000000..cf0df165ae
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo.solution.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.demo.solution">
+
+ <component name="supplychain.DemoClient">
+ <implementation.composite name="supplychain.demo"/>
+ <reference name="retailer">supplychain.Retailer/RetailerService</reference>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ </component>
+
+ <component name="supplychain.Logging">
+ <implementation.composite name="supplychain.logging"/>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/DemoClientImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/DemoClientImpl.componentType
new file mode 100644
index 0000000000..a63e4c37d3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/DemoClientImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <reference name="retailer">
+ <interface.cpp header="Retailer.h"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.cpp header="Logging.h"/>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/supplychain.demo.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/supplychain.demo.composite
new file mode 100644
index 0000000000..20b0e49ec1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.demo/supplychain.demo.composite
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.demo">
+
+ <component name="DemoClient">
+ <implementation.cpp library="demo" header="DemoClientImpl.h"/>
+ <reference name="retailer">retailer</reference>
+ <reference name="logging">logging</reference>
+ </component>
+
+ <reference name="retailer">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl#wsdl.interface(RetailerPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl#wsdl.endpoint(RetailerService/RetailerPort)"
+ uri="http://localhost:9090/axis2/services/supplychain.retailer.solution/RetailerService"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.interface(LoggingFacilityLogPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.endpoint(LoggingFacilityService/LoggingFacilityPort)"/>
+ </reference>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggerImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggerImpl.componentType
new file mode 100644
index 0000000000..e78e602635
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggerImpl.componentType
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="LoggingService">
+ <interface.cpp header="Logging.h"/>
+ </service>
+
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggingFacility.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggingFacility.wsdl
new file mode 100644
index 0000000000..c78357b1a8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/LoggingFacility.wsdl
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<wsdl:definitions name="LoggingFacility"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl"
+ xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+
+ <wsdl:import
+ namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl"
+ location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl" />
+
+ <wsdl:service name="LoggingFacilityService">
+ <wsdl:port name="LoggingFacilityPort"
+ binding="tns:LoggingFacilitySoapBinding">
+ <soap:address
+ location="http://localhost:9090/axis2/services/LoggingFacility" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/supplychain.logging.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/supplychain.logging.composite
new file mode 100644
index 0000000000..2b28c8f9e2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.logging/supplychain.logging.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.logging">
+
+ <service name="LoggingService">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.interface(LoggingFacilityLogPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.endpoint(LoggingFacilityService/LoggingFacilityPort)"/>
+ <reference>Logger/Logging</reference>
+ </service>
+
+ <component name="Logger">
+ <implementation.cpp library="logging" header="LoggerImpl.h"/>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/Manufacturer.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/Manufacturer.wsdl
new file mode 100644
index 0000000000..fb0c8a5676
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/Manufacturer.wsdl
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions name="Manufacturer"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl"
+ xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl">
+
+ <wsdl:import
+ namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl"
+ location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl" />
+
+ <wsdl:service name="ManufacturerService">
+ <wsdl:port name="ManufacturerPort"
+ binding="tns:ManufacturerSoapBinding">
+ <soap:address
+ location="http://localhost:9090/axis2/services/Manufacturer" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/ManufacturerImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/ManufacturerImpl.componentType
new file mode 100644
index 0000000000..63530bc0ee
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/ManufacturerImpl.componentType
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="ManufacturerService">
+ <interface.cpp header="Manufacturer.h"/>
+ </service>
+
+ <reference name="callback">
+ <interface.cpp header="WarehouseCallback.h"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.cpp header="Logging.h"/>
+ </reference>
+
+ <property name="manufacturerID" type="xs:string"/>
+
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/WarehouseCallback.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/WarehouseCallback.wsdl
new file mode 100644
index 0000000000..256671f64f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/WarehouseCallback.wsdl
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions name="WarehouseCallback"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl"
+ xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl">
+
+ <wsdl:import
+ namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl"
+ location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl" />
+
+ <wsdl:service name="WarehouseCallbackService">
+ <wsdl:port name="WarehouseCallbackPort"
+ binding="tns:WarehouseCallbackSoapBinding">
+ <soap:address
+ location="http://localhost:9090/axis2/services/WarehouseCallback" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/supplychain.manufacturer.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/supplychain.manufacturer.composite
new file mode 100644
index 0000000000..c61657c0a7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturer/supplychain.manufacturer.composite
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ name="supplychain.manufacturer">
+
+ <service name="ManufacturerService">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.interface(ManufacturerPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.endpoint(ManufacturerService/ManufacturerPort)"/>
+ <reference>ManufacturerProcess/ManufacturerService</reference>
+ </service>
+
+ <property name="manufacturerID" type="xs:string"/>
+
+ <component name="ManufacturerProcess">
+ <implementation.cpp library="manufacturer" header="ManufacturerImpl.h"/>
+ <reference name="callback">callback</reference>
+ <reference name="logging">logging</reference>
+ <property name="manufacturerID" source="$manufacturerID"/>
+ </component>
+
+ <reference name="logging">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.interface(LoggingFacilityLogPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.endpoint(LoggingFacilityService/LoggingFacilityPort)"/>
+ </reference>
+
+ <reference name="callback">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.interface(WarehouseCallbackPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.endpoint(WarehouseCallbackService/WarehouseCallbackPort)"/>
+ </reference>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerA.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerA.solution.composite
new file mode 100644
index 0000000000..17449e51fa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerA.solution.composite
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.manufacturerA.solution">
+
+ <component name="supplychain.manufacturerA">
+ <implementation.composite name="supplychain.manufacturer"/>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ <property name="manufacturerID">manufacturerA</property>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerB.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerB.solution.composite
new file mode 100644
index 0000000000..94535d704a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerB.solution.composite
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.manufacturerB.solution">
+
+ <component name="supplychain.manufacturerB">
+ <implementation.composite name="supplychain.manufacturer"/>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ <property name="manufacturerID">manufacturerB</property>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerC.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerC.solution.composite
new file mode 100644
index 0000000000..b4b9380af0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.manufacturerC.solution.composite
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.manufacturerC.solution">
+
+ <component name="supplychain.manufacturerC">
+ <implementation.composite name="supplychain.manufacturer"/>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ <property name="manufacturerID">manufacturerC</property>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer.solution.composite
new file mode 100644
index 0000000000..f7bad01614
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer.solution.composite
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.retailer.solution">
+
+ <component name="supplychain.Retailer">
+ <implementation.composite name="supplychain.retailer"/>
+ <reference name="warehouse">supplychain.WarehouseA/WarehouseService</reference>
+ <reference name="warehouse">supplychain.WarehouseB/WarehouseService</reference>
+ <reference name="warehouse">supplychain.WarehouseC/WarehouseService</reference>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ </component>
+
+ <component name="supplychain.WarehouseA">
+ <implementation.composite name="supplychain.warehouse"/>
+ <reference name="manufacturer">supplychain.manufacturerA/ManufacturerService</reference>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ <property name="warehouseID">warehouseA</property>
+ </component>
+
+ <component name="supplychain.WarehouseB">
+ <implementation.composite name="supplychain.warehouse"/>
+ <reference name="manufacturer">supplychain.manufacturerB/ManufacturerService</reference>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ <property name="warehouseID">warehouseB</property>
+ </component>
+
+ <component name="supplychain.WarehouseC">
+ <implementation.composite name="supplychain.warehouse"/>
+ <reference name="manufacturer">supplychain.manufacturerA/ManufacturerService</reference>
+ <reference name="logging">supplychain.Logging/LoggingService</reference>
+ <property name="warehouseID">warehouseC</property>
+ </component>
+
+ <wire>
+ <source>supplychain.manufacturerA/callback</source>
+ <target>supplychain.WarehouseA/WarehouseCallbackService</target>
+ </wire>
+ <wire>
+ <source>supplychain.manufacturerB/callback</source>
+ <target>supplychain.WarehouseB/WarehouseCallbackService</target>
+ </wire>
+ <wire>
+ <source>supplychain.manufacturerC/callback</source>
+ <target>supplychain.WarehouseC/WarehouseCallbackService</target>
+ </wire>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/Retailer.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/Retailer.wsdl
new file mode 100644
index 0000000000..39bd1963f2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/Retailer.wsdl
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions name="Retailer"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"
+ xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+ <wsdl:import
+ namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl"
+ location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl" />
+
+ <wsdl:service name="RetailerService">
+ <wsdl:port name="RetailerPort"
+ binding="tns:RetailerSoapBinding">
+ <soap:address
+ location="http://localhost:9090/axis2/services/Retailer" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/RetailerImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/RetailerImpl.componentType
new file mode 100644
index 0000000000..fb381ec9a6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/RetailerImpl.componentType
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="RetailerService">
+ <interface.cpp header="Retailer.h"/>
+ </service>
+
+ <reference name="warehouses" multiplicity="0..n">
+ <interface.cpp header="Warehouse.h"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.cpp header="Logging.h"/>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/supplychain.retailer.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/supplychain.retailer.composite
new file mode 100644
index 0000000000..51a2b96b1b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.retailer/supplychain.retailer.composite
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="supplychain.retailer">
+
+ <service name="RetailerService">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl#wsdl.interface(RetailerPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Retailer.wsdl#wsdl.endpoint(RetailerService/RetailerPort)"/>
+ <reference>RetailerProcess/RetailerService</reference>
+ </service>
+
+ <component name="RetailerProcess">
+ <implementation.cpp library="retailer" header="RetailerImpl.h"/>
+ <reference name="warehouses">warehouses</reference>
+ <reference name="logging">logging</reference>
+ </component>
+
+ <reference name="warehouses" multiplicity="0..n">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl#wsdl.interface(WarehouseShipmentsPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl#wsdl.endpoint(WarehouseShipmentsService/WarehouseShipmentsPort)"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.interface(LoggingFacilityLogPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.endpoint(LoggingFacilityService/LoggingFacilityPort)"/>
+ </reference>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/Warehouse.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/Warehouse.wsdl
new file mode 100644
index 0000000000..a007f9957b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/Warehouse.wsdl
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<wsdl:definitions name="Warehouse"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl"
+ xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+
+ <wsdl:import
+ namespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl"
+ location="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl" />
+
+ <wsdl:service name="WarehouseService">
+ <wsdl:port name="WarehousePort"
+ binding="tns:WarehouseSoapBinding">
+ <soap:address
+ location="http://localhost:9090/axis2/services/Warehouse" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseCallbackImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseCallbackImpl.componentType
new file mode 100644
index 0000000000..fbc1edb462
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseCallbackImpl.componentType
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="WarehouseCallbackService">
+ <interface.cpp header="WarehouseCallback.h"/>
+ </service>
+
+ <reference name="logging">
+ <interface.cpp header="Logging.h"/>
+ </reference>
+
+ <property name="warehouseID" type="xs:string"/>
+
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseImpl.componentType
new file mode 100644
index 0000000000..7f63d3b571
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/WarehouseImpl.componentType
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="WarehouseService">
+ <interface.cpp header="Warehouse.h"/>
+ </service>
+
+ <reference name="manufacturer">
+ <interface.cpp header="Manufacturer.h"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.cpp header="Logging.h"/>
+ </reference>
+
+ <property name="warehouseID" type="xs:string"/>
+
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/supplychain.warehouse.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/supplychain.warehouse.composite
new file mode 100644
index 0000000000..e44b964eb4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/SupplyChain/supplychain.warehouse/supplychain.warehouse.composite
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ name="supplychain.warehouse">
+
+ <service name="WarehouseService">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl#wsdl.interface(WarehouseShipmentsPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/Warehouse.wsdl#wsdl.endpoint(WarehouseService/WarehousePort)"/>
+ <reference>WarehouseProcess/WarehouseService</reference>
+ </service>
+
+ <service name="WarehouseCallbackService">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.interface(WarehouseCallbackPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.endpoint(WarehouseCallbackService/WarehouseCallbackPort)"/>
+ <reference>WarehouseCallbackProcess/WarehouseCallbackService</reference>
+ </service>
+
+ <property name="warehouseID" type="xs:string"/>
+
+ <component name="WarehouseProcess">
+ <implementation.cpp library="warehouse" header="WarehouseImpl.h"/>
+ <reference name="manufacturer">manufacturer</reference>
+ <reference name="logging">logging</reference>
+ <property name="warehouseID" source="$warehouseID"/>
+ </component>
+
+ <component name="WarehouseCallbackProcess">
+ <implementation.cpp library="warehouse" header="WarehouseCallbackImpl.h"/>
+ <reference name="logging">logging</reference>
+ <property name="warehouseID" source="$warehouseID"/>
+ </component>
+
+ <reference name="manufacturer">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.interface(ManufacturerPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-10/Manufacturer.wsdl#wsdl.endpoint(ManufacturerService/ManufacturerPort)"/>
+ </reference>
+
+ <reference name="logging">
+ <interface.wsdl interface="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.interface(LoggingFacilityLogPortType)"/>
+ <binding.ws endpoint="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/LoggingFacility.wsdl#wsdl.endpoint(LoggingFacilityService/LoggingFacilityPort)"/>
+ </reference>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/autogen.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/autogen.sh
new file mode 100755
index 0000000000..18277601c8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/autogen.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+for i in "libtoolize --force" aclocal autoconf autoheader
+do
+ echo -n "Running $i..."
+ $i || exit 1
+ echo 'done.'
+done
+
+echo -n 'Running automake...'
+automake --add-missing
+echo 'done.'
+exit 0
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/build.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/build.sh
new file mode 100755
index 0000000000..7a3c439e8b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/build.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+./configure --prefix=${TUSCANY_SCACPP} --enable-static=no
+make
+make install
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/configure.ac b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/configure.ac
new file mode 100644
index 0000000000..f59c04ba2d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/configure.ac
@@ -0,0 +1,168 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+dnl run autogen.sh to generate the configure script.
+
+AC_PREREQ(2.59)
+AC_INIT(tuscany_sca_samples, 1.0-incubator-M2)
+AC_CANONICAL_SYSTEM
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+AC_PREFIX_DEFAULT(/usr/local/tuscany/sca/samples)
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
+
+# Check for dynamic library suffixes
+AC_MSG_CHECKING([checking for dynamic library suffix])
+AC_CHECK_HEADER([sys/appleapiopts.h],
+ [AC_SUBST([libsuffix],[".dylib"]) AC_MSG_RESULT([using .dylib])],
+ [AC_SUBST([libsuffix],[".so"]) AC_MSG_RESULT([using .so])]
+)
+
+# Checks for libraries.
+
+# Checks for header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS([inttypes.h stdlib.h string.h sys/time.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_CONST
+AC_C_INLINE
+
+# Checks for library functions.
+AC_FUNC_CLOSEDIR_VOID
+AC_FUNC_STAT
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS([getcwd putenv strdup])
+
+AC_MSG_CHECKING(whether to build all samples)
+AC_ARG_ENABLE(all-samples, [AS_HELP_STRING([--enable-all-samples],[build all samples [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_all_samples=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_all_samples=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_all_samples=false ]
+)
+AM_CONDITIONAL([WANT_ALL_SAMPLES], [test x$want_all_samples = xtrue])
+
+AC_MSG_CHECKING(whether to build C++ samples)
+AC_ARG_ENABLE(cpp, [AS_HELP_STRING([--enable-cpp],[build C++ samples [default=yes]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_cpp_samples=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_cpp_samples=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(yes)
+ want_cpp_samples=true ]
+)
+AM_CONDITIONAL([WANT_CPP_SAMPLES], [test x$want_cpp_samples = xtrue])
+
+AC_MSG_CHECKING(whether to build Python samples)
+AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build Python samples [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_python_samples=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_python_samples=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_python_samples=false ]
+)
+AM_CONDITIONAL([WANT_PYTHON_SAMPLES], [test x$want_python_samples = xtrue])
+
+AC_MSG_CHECKING(whether to build Ruby samples)
+AC_ARG_ENABLE(ruby, [AS_HELP_STRING([--enable-ruby],[build Ruby samples [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_ruby_samples=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_ruby_samples=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_ruby_samples=false ]
+)
+AM_CONDITIONAL([WANT_RUBY_SAMPLES], [test x$want_ruby_samples = xtrue])
+
+AC_MSG_CHECKING(whether to build PHP samples)
+AC_ARG_ENABLE(php, [AS_HELP_STRING([--enable-php],[build PHP samples [default=no]])],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ want_php_samples=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ want_php_samples=true
+ ;;
+ esac ],
+[ AC_MSG_RESULT(no)
+ want_php_samples=false ]
+)
+AM_CONDITIONAL([WANT_PHP_SAMPLES], [test x$want_php_samples = xtrue])
+
+AC_CONFIG_FILES([Makefile
+ Calculator/Makefile
+ Calculator/sample.calculator/Makefile
+ Calculator/sample.calculator.client/Makefile
+ Calculator/sample.calculator.wsclient/Makefile
+ RubyCalculator/Makefile
+ RubyCalculator/sample.calculator/Makefile
+ RubyCalculator/sample.calculator.client/Makefile
+ RubyCalculator/sample.calculator.wsclient/Makefile
+ PythonCalculator/Makefile
+ PythonCalculator/sample.calculator/Makefile
+ PythonCalculator/sample.calculator.client/Makefile
+ PythonCalculator/sample.calculator.wsclient/Makefile
+ BigBank/Makefile
+ BigBank/bigbank.account/Makefile
+ BigBank/bigbank.client/Makefile
+ BigBank/bigbank.wsclient/Makefile
+ BigBank/bigbank.phpwsclient/Makefile
+ RubyBank/Makefile
+ RubyBank/bigbank.account/Makefile
+ RubyBank/bigbank.client/Makefile
+ ])
+AC_OUTPUT
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.dsp
new file mode 100644
index 0000000000..afc73a11e9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.dsp
@@ -0,0 +1,116 @@
+# Microsoft Developer Studio Project File - Name="AccountClient" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=AccountClient - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "AccountClient.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "AccountClient.mak" CFG="AccountClient - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "AccountClient - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "AccountClient - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "AccountClient - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\BigBank\bigbank.account" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /machine:I386 /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\BigBank\deployclient.bat ..\..\..\..\..\BigBank Release call ..\..\..\..\..\scagen.bat ..\..\..\..\..\BigBank\bigbank.account
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "AccountClient - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\BigBank\bigbank.account" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\BigBank\deployclient.bat ..\..\..\..\..\BigBank Debug call ..\..\..\..\..\scagen.bat ..\..\..\..\..\BigBank\bigbank.account
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "AccountClient - Win32 Release"
+# Name "AccountClient - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.client\AccountClient.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.client\AccountService.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.mak
new file mode 100644
index 0000000000..0368231581
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.mak
@@ -0,0 +1,214 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on AccountClient.dsp
+!IF "$(CFG)" == ""
+CFG=AccountClient - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to AccountClient - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "AccountClient - Win32 Release" && "$(CFG)" != "AccountClient - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "AccountClient.mak" CFG="AccountClient - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "AccountClient - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "AccountClient - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "AccountClient - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\AccountClient.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\AccountClient.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\AccountClient.exe"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\BigBank\bigbank.account" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\AccountClient.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\AccountClient.pdb" /machine:I386 /out:"$(OUTDIR)\AccountClient.exe" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\AccountClient.obj"
+
+"$(OUTDIR)\AccountClient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\AccountClient.exe"
+ call ..\..\..\..\..\BigBank\deployclient.bat ..\..\..\..\..\BigBank Release
+ call ..\..\..\..\..\scagen.bat ..\..\..\..\..\BigBank\bigbank.account
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "AccountClient - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\AccountClient.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\AccountClient.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\AccountClient.exe"
+ -@erase "$(OUTDIR)\AccountClient.ilk"
+ -@erase "$(OUTDIR)\AccountClient.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\BigBank\bigbank.account" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\AccountClient.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\AccountClient.pdb" /debug /machine:I386 /out:"$(OUTDIR)\AccountClient.exe" /pdbtype:sept /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\AccountClient.obj"
+
+"$(OUTDIR)\AccountClient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\AccountClient.exe"
+ call ..\..\..\..\..\BigBank\deployclient.bat ..\..\..\..\..\BigBank Debug
+ call ..\..\..\..\..\scagen.bat ..\..\..\..\..\BigBank\bigbank.account
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("AccountClient.dep")
+!INCLUDE "AccountClient.dep"
+!ELSE
+!MESSAGE Warning: cannot find "AccountClient.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "AccountClient - Win32 Release" || "$(CFG)" == "AccountClient - Win32 Debug"
+SOURCE=..\..\..\..\..\BigBank\bigbank.client\AccountClient.cpp
+
+"$(INTDIR)\AccountClient.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.dsp
new file mode 100644
index 0000000000..91b6640c91
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.dsp
@@ -0,0 +1,253 @@
+# Microsoft Developer Studio Project File - Name="Accounts" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Accounts - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Accounts.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Accounts.mak" CFG="Accounts - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Accounts - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Accounts - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Accounts - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ACCOUNTS_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ACCOUNTS_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /dll /machine:I386 /out:"Release/Account.dll" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\BigBank\deploy.bat ..\..\..\..\..\BigBank Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "Accounts - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ACCOUNTS_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ACCOUNTS_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /dll /debug /machine:I386 /out:"Debug/Account.dll" /pdbtype:sept /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\BigBank\deploy.bat ..\..\..\..\..\BigBank Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "Accounts - Win32 Release"
+# Name "Accounts - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Wrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_accountDataService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Wrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_stockQuoteService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Wrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_webService_Proxy.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataService.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Wrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountService.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_accountDataService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Wrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_stockQuoteService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteService.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Wrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_webService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteWebService.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.componentType
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountService.wsdl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.componentType
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\bigbank.account.composite
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.componentType
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteTypes.xsd
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteWebService.wsdl
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.mak
new file mode 100644
index 0000000000..b173c70132
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.mak
@@ -0,0 +1,344 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on Accounts.dsp
+!IF "$(CFG)" == ""
+CFG=Accounts - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Accounts - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Accounts - Win32 Release" && "$(CFG)" != "Accounts - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Accounts.mak" CFG="Accounts - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Accounts - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Accounts - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Accounts - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\Account.dll"
+
+!ELSE
+
+ALL : "AccountClient - Win32 Release" "$(OUTDIR)\Account.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"AccountClient - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\AccountDataServiceImpl.obj"
+ -@erase "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Proxy.obj"
+ -@erase "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Wrapper.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_accountDataService_Proxy.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_AccountService_Proxy.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_AccountService_Wrapper.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_stockQuoteService_Proxy.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Proxy.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Wrapper.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl_webService_Proxy.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\Account.dll"
+ -@erase "$(OUTDIR)\Account.exp"
+ -@erase "$(OUTDIR)\Account.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ACCOUNTS_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\Accounts.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\Account.pdb" /machine:I386 /out:"$(OUTDIR)\Account.dll" /implib:"$(OUTDIR)\Account.lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\AccountDataServiceImpl.obj" \
+ "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Proxy.obj" \
+ "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Wrapper.obj" \
+ "$(INTDIR)\AccountServiceImpl.obj" \
+ "$(INTDIR)\AccountServiceImpl_accountDataService_Proxy.obj" \
+ "$(INTDIR)\AccountServiceImpl_AccountService_Proxy.obj" \
+ "$(INTDIR)\AccountServiceImpl_AccountService_Wrapper.obj" \
+ "$(INTDIR)\AccountServiceImpl_stockQuoteService_Proxy.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Proxy.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Wrapper.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl_webService_Proxy.obj"
+
+"$(OUTDIR)\Account.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "AccountClient - Win32 Release" "$(OUTDIR)\Account.dll"
+ call ..\..\..\..\..\BigBank\deploy.bat ..\..\..\..\..\BigBank Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "Accounts - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\Account.dll"
+
+!ELSE
+
+ALL : "AccountClient - Win32 Debug" "$(OUTDIR)\Account.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"AccountClient - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\AccountDataServiceImpl.obj"
+ -@erase "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Proxy.obj"
+ -@erase "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Wrapper.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_accountDataService_Proxy.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_AccountService_Proxy.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_AccountService_Wrapper.obj"
+ -@erase "$(INTDIR)\AccountServiceImpl_stockQuoteService_Proxy.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Proxy.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Wrapper.obj"
+ -@erase "$(INTDIR)\StockQuoteServiceImpl_webService_Proxy.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\Account.dll"
+ -@erase "$(OUTDIR)\Account.exp"
+ -@erase "$(OUTDIR)\Account.ilk"
+ -@erase "$(OUTDIR)\Account.lib"
+ -@erase "$(OUTDIR)\Account.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ACCOUNTS_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\Accounts.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\Account.pdb" /debug /machine:I386 /out:"$(OUTDIR)\Account.dll" /implib:"$(OUTDIR)\Account.lib" /pdbtype:sept /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\AccountDataServiceImpl.obj" \
+ "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Proxy.obj" \
+ "$(INTDIR)\AccountDataServiceImpl_AccountDataService_Wrapper.obj" \
+ "$(INTDIR)\AccountServiceImpl.obj" \
+ "$(INTDIR)\AccountServiceImpl_accountDataService_Proxy.obj" \
+ "$(INTDIR)\AccountServiceImpl_AccountService_Proxy.obj" \
+ "$(INTDIR)\AccountServiceImpl_AccountService_Wrapper.obj" \
+ "$(INTDIR)\AccountServiceImpl_stockQuoteService_Proxy.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Proxy.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Wrapper.obj" \
+ "$(INTDIR)\StockQuoteServiceImpl_webService_Proxy.obj"
+
+"$(OUTDIR)\Account.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "AccountClient - Win32 Debug" "$(OUTDIR)\Account.dll"
+ call ..\..\..\..\..\BigBank\deploy.bat ..\..\..\..\..\BigBank Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("Accounts.dep")
+!INCLUDE "Accounts.dep"
+!ELSE
+!MESSAGE Warning: cannot find "Accounts.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "Accounts - Win32 Release" || "$(CFG)" == "Accounts - Win32 Debug"
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.cpp
+
+"$(INTDIR)\AccountDataServiceImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Proxy.cpp
+
+"$(INTDIR)\AccountDataServiceImpl_AccountDataService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Wrapper.cpp
+
+"$(INTDIR)\AccountDataServiceImpl_AccountDataService_Wrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.cpp
+
+"$(INTDIR)\AccountServiceImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_accountDataService_Proxy.cpp
+
+"$(INTDIR)\AccountServiceImpl_accountDataService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Proxy.cpp
+
+"$(INTDIR)\AccountServiceImpl_AccountService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Wrapper.cpp
+
+"$(INTDIR)\AccountServiceImpl_AccountService_Wrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_stockQuoteService_Proxy.cpp
+
+"$(INTDIR)\AccountServiceImpl_stockQuoteService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.cpp
+
+"$(INTDIR)\StockQuoteServiceImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Proxy.cpp
+
+"$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Wrapper.cpp
+
+"$(INTDIR)\StockQuoteServiceImpl_StockQuoteService_Wrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_webService_Proxy.cpp
+
+"$(INTDIR)\StockQuoteServiceImpl_webService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "Accounts - Win32 Release"
+
+"AccountClient - Win32 Release" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Release"
+ cd "..\Accounts"
+
+"AccountClient - Win32 ReleaseCLEAN" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Accounts"
+
+!ELSEIF "$(CFG)" == "Accounts - Win32 Debug"
+
+"AccountClient - Win32 Debug" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Debug"
+ cd "..\Accounts"
+
+"AccountClient - Win32 DebugCLEAN" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Accounts"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.dsw b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.dsw
new file mode 100644
index 0000000000..5771d655c1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.dsw
@@ -0,0 +1,77 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "AccountClient"=.\AccountClient\AccountClient.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "Accounts"=.\Accounts\Accounts.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name AccountClient
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "Build"=.\Build\Build.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name Accounts
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name AccountClient
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name WSAccountClient
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "WSAccountClient"=.\WSAccountClient\WSAccountClient.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncb
new file mode 100644
index 0000000000..df956231ae
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncb
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.opt b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.opt
new file mode 100644
index 0000000000..bbe2b7f841
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/BigBank.opt
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.dsp
new file mode 100644
index 0000000000..e24bca445c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.dsp
@@ -0,0 +1,67 @@
+# Microsoft Developer Studio Project File - Name="Build" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Generic Project" 0x010a
+
+CFG=Build - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak" CFG="Build - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+MTL=midl.exe
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "Build - Win32 Release"
+# Name "Build - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\BuildInstructions.txt
+# End Source File
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.mak
new file mode 100644
index 0000000000..452df03c2d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.mak
@@ -0,0 +1,152 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on Build.dsp
+!IF "$(CFG)" == ""
+CFG=Build - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Build - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Build - Win32 Release" && "$(CFG)" != "Build - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak" CFG="Build - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+OUTDIR=.\Release
+INTDIR=.\Release
+
+!IF "$(RECURSE)" == "0"
+
+ALL :
+
+!ELSE
+
+ALL : "WSAccountClient - Win32 Release" "AccountClient - Win32 Release" "Accounts - Win32 Release"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"Accounts - Win32 ReleaseCLEAN" "AccountClient - Win32 ReleaseCLEAN" "WSAccountClient - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+MTL=midl.exe
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+!ENDIF
+
+MTL_PROJ=
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("Build.dep")
+!INCLUDE "Build.dep"
+!ELSE
+!MESSAGE Warning: cannot find "Build.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "Build - Win32 Release" || "$(CFG)" == "Build - Win32 Debug"
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"Accounts - Win32 Release" :
+ cd "..\Accounts"
+ $(MAKE) /$(MAKEFLAGS) /F .\Accounts.mak CFG="Accounts - Win32 Release"
+ cd "..\Build"
+
+"Accounts - Win32 ReleaseCLEAN" :
+ cd "..\Accounts"
+ $(MAKE) /$(MAKEFLAGS) /F .\Accounts.mak CFG="Accounts - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"Accounts - Win32 Debug" :
+ cd "..\Accounts"
+ $(MAKE) /$(MAKEFLAGS) /F .\Accounts.mak CFG="Accounts - Win32 Debug"
+ cd "..\Build"
+
+"Accounts - Win32 DebugCLEAN" :
+ cd "..\Accounts"
+ $(MAKE) /$(MAKEFLAGS) /F .\Accounts.mak CFG="Accounts - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"AccountClient - Win32 Release" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Release"
+ cd "..\Build"
+
+"AccountClient - Win32 ReleaseCLEAN" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"AccountClient - Win32 Debug" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Debug"
+ cd "..\Build"
+
+"AccountClient - Win32 DebugCLEAN" :
+ cd "..\AccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\AccountClient.mak CFG="AccountClient - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"WSAccountClient - Win32 Release" :
+ cd "..\WSAccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSAccountClient.mak CFG="WSAccountClient - Win32 Release"
+ cd "..\Build"
+
+"WSAccountClient - Win32 ReleaseCLEAN" :
+ cd "..\WSAccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSAccountClient.mak CFG="WSAccountClient - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"WSAccountClient - Win32 Debug" :
+ cd "..\WSAccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSAccountClient.mak CFG="WSAccountClient - Win32 Debug"
+ cd "..\Build"
+
+"WSAccountClient - Win32 DebugCLEAN" :
+ cd "..\WSAccountClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSAccountClient.mak CFG="WSAccountClient - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/BuildInstructions.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/BuildInstructions.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/Build/BuildInstructions.txt
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.dsp
new file mode 100644
index 0000000000..1c240d56d4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.dsp
@@ -0,0 +1,120 @@
+# Microsoft Developer Studio Project File - Name="WSAccountClient" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=WSAccountClient - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "WSAccountClient.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "WSAccountClient.mak" CFG="WSAccountClient - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "WSAccountClient - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "WSAccountClient - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "WSAccountClient - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "$(AXIS2C_HOME)\include" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /machine:I386 /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(AXIS2C_HOME)/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\BigBank\deploywsclient.bat ..\..\..\..\..\BigBank Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "WSAccountClient - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(AXIS2C_HOME)\include" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(AXIS2C_HOME)/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\BigBank\deploywsclient.bat ..\..\..\..\..\BigBank Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "WSAccountClient - Win32 Release"
+# Name "WSAccountClient - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.wsclient\AccountWSClient.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.wsclient\axis2_Account_stub.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.wsclient\axis2_Account_stub.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.mak
new file mode 100644
index 0000000000..9f6881a584
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.mak
@@ -0,0 +1,189 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on WSAccountClient.dsp
+!IF "$(CFG)" == ""
+CFG=WSAccountClient - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to WSAccountClient - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "WSAccountClient - Win32 Release" && "$(CFG)" != "WSAccountClient - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "WSAccountClient.mak" CFG="WSAccountClient - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "WSAccountClient - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "WSAccountClient - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "WSAccountClient - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\WSAccountClient.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\AccountWSClient.obj"
+ -@erase "$(INTDIR)\axis2_Account_stub.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\WSAccountClient.exe"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "$(AXIS2C_HOME)\include" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\WSAccountClient.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\WSAccountClient.pdb" /machine:I386 /out:"$(OUTDIR)\WSAccountClient.exe" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(AXIS2C_HOME)/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\AccountWSClient.obj" \
+ "$(INTDIR)\axis2_Account_stub.obj"
+
+"$(OUTDIR)\WSAccountClient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\WSAccountClient.exe"
+ call ..\..\..\..\..\BigBank\deploywsclient.bat ..\..\..\..\..\BigBank Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "WSAccountClient - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\WSAccountClient.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\AccountWSClient.obj"
+ -@erase "$(INTDIR)\axis2_Account_stub.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\WSAccountClient.exe"
+ -@erase "$(OUTDIR)\WSAccountClient.ilk"
+ -@erase "$(OUTDIR)\WSAccountClient.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(AXIS2C_HOME)\include" /I "$(TUSCANY_SCACPP)\include" /I "$(TUSCANY_SCACPP)\extensions\cpp\include" /I "$(TUSCANY_SDOCPP)\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\WSAccountClient.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\WSAccountClient.pdb" /debug /machine:I386 /out:"$(OUTDIR)\WSAccountClient.exe" /pdbtype:sept /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(AXIS2C_HOME)/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\AccountWSClient.obj" \
+ "$(INTDIR)\axis2_Account_stub.obj"
+
+"$(OUTDIR)\WSAccountClient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\WSAccountClient.exe"
+ call ..\..\..\..\..\BigBank\deploywsclient.bat ..\..\..\..\..\BigBank Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("WSAccountClient.dep")
+!INCLUDE "WSAccountClient.dep"
+!ELSE
+!MESSAGE Warning: cannot find "WSAccountClient.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "WSAccountClient - Win32 Release" || "$(CFG)" == "WSAccountClient - Win32 Debug"
+SOURCE=..\..\..\..\..\BigBank\bigbank.wsclient\AccountWSClient.cpp
+
+"$(INTDIR)\AccountWSClient.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\BigBank\bigbank.wsclient\axis2_Account_stub.cpp
+
+"$(INTDIR)\axis2_Account_stub.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/build.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/build.cmd
new file mode 100644
index 0000000000..0cf0ac8e3e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/BigBank/build.cmd
@@ -0,0 +1,24 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+call vcvars32
+cd Build
+nmake -f Build.mak CFG="Build - Win32 Release"
+cd ..
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.dsp
new file mode 100644
index 0000000000..e24bca445c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.dsp
@@ -0,0 +1,67 @@
+# Microsoft Developer Studio Project File - Name="Build" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Generic Project" 0x010a
+
+CFG=Build - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak" CFG="Build - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+MTL=midl.exe
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+
+!ENDIF
+
+# Begin Target
+
+# Name "Build - Win32 Release"
+# Name "Build - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\BuildInstructions.txt
+# End Source File
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.mak
new file mode 100644
index 0000000000..1c01e71a39
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.mak
@@ -0,0 +1,155 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on Build.dsp
+!IF "$(CFG)" == ""
+CFG=Build - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Build - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Build - Win32 Release" && "$(CFG)" != "Build - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build.mak" CFG="Build - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+OUTDIR=.\Release
+INTDIR=.\Release
+
+!IF "$(RECURSE)" == "0"
+
+ALL :
+
+!ELSE
+
+ALL : "WSClient - Win32 Release" "Client - Win32 Release" "Calculator - Win32 Release"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"Calculator - Win32 ReleaseCLEAN" "Client - Win32 ReleaseCLEAN" "WSClient - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+MTL=midl.exe
+MTL_PROJ=
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+MTL=midl.exe
+MTL_PROJ=
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("Build.dep")
+!INCLUDE "Build.dep"
+!ELSE
+!MESSAGE Warning: cannot find "Build.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "Build - Win32 Release" || "$(CFG)" == "Build - Win32 Debug"
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"Calculator - Win32 Release" :
+ cd "..\Calculator"
+ $(MAKE) /$(MAKEFLAGS) /F .\Calculator.mak CFG="Calculator - Win32 Release"
+ cd "..\Build"
+
+"Calculator - Win32 ReleaseCLEAN" :
+ cd "..\Calculator"
+ $(MAKE) /$(MAKEFLAGS) /F .\Calculator.mak CFG="Calculator - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"Calculator - Win32 Debug" :
+ cd "..\Calculator"
+ $(MAKE) /$(MAKEFLAGS) /F .\Calculator.mak CFG="Calculator - Win32 Debug"
+ cd "..\Build"
+
+"Calculator - Win32 DebugCLEAN" :
+ cd "..\Calculator"
+ $(MAKE) /$(MAKEFLAGS) /F .\Calculator.mak CFG="Calculator - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"Client - Win32 Release" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Release"
+ cd "..\Build"
+
+"Client - Win32 ReleaseCLEAN" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"Client - Win32 Debug" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Debug"
+ cd "..\Build"
+
+"Client - Win32 DebugCLEAN" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+!IF "$(CFG)" == "Build - Win32 Release"
+
+"WSClient - Win32 Release" :
+ cd "..\WSClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSClient.mak CFG="WSClient - Win32 Release"
+ cd "..\Build"
+
+"WSClient - Win32 ReleaseCLEAN" :
+ cd "..\WSClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSClient.mak CFG="WSClient - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ELSEIF "$(CFG)" == "Build - Win32 Debug"
+
+"WSClient - Win32 Debug" :
+ cd "..\WSClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSClient.mak CFG="WSClient - Win32 Debug"
+ cd "..\Build"
+
+"WSClient - Win32 DebugCLEAN" :
+ cd "..\WSClient"
+ $(MAKE) /$(MAKEFLAGS) /F .\WSClient.mak CFG="WSClient - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Build"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/BuildInstructions.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/BuildInstructions.txt
new file mode 100644
index 0000000000..275b01e3e2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Build/BuildInstructions.txt
@@ -0,0 +1,93 @@
+
+These sample projects will build:
+
+A basic calculator SCA service.
+A client to test that service.
+A WSClient to test the service as exposed by AXIS2C as a web service.
+
+The sample depdends on the current versions of Tuscany SDO and Tuscany SCA, which in turn
+depend on axis2c version 0.92, and libxml2. See the SCA and SDO project installation
+details.
+
+The sample already has the pre-generated proxy and wrapper code in it, but should
+you need to regenerate these, you will need the command line tool "scagen" which is
+part of the Tuscany SCA project.
+
+The projects expect to following environment variables to be set:
+TUSCANY_SCACPP:
+The directory in which the sca runtime is deployed - probably something ending in sca/deploy.
+
+TUSCANY_SDOCPP:
+The directory where the sdo runtime is deployed - probably something ending in sdo/deploy.
+
+TUSCANY_SCACPP_DEFAULT_COMPONENT=CalculatorSubsystem
+This is the default composite to be loaded by SCA. It consists of <subsystem>/<component>
+
+TUSCANY_SCACPP_SYSTEM_ROOT
+This is the point from which SCA will start looking for composites to load. Again this is
+set programmatically by the sample.
+
+AXIS2C_HOME:
+This is where axis2c is deployed- this is only required by the WSClient project.
+
+The Calculator project contains a simple calculator service, and the descriptive files
+which help the runtime to find the service.
+
+
+Rebuilding the proxy and wrapper classes
+========================================
+
+If required, go to the Calculator sample main directory, and
+type:
+"scagen -dir CalculatorComposite -output CalculatorComposite"
+
+The generated code is put into the CalculatorComposite subdirectory.
+
+Building the Client project
+===========================
+
+Set the active project to be "Client", and then build all.
+This will re-build Calculator, then rebuild the Client,
+The final step of the build will call a batch file "deploy.cmd",
+which copies all the required files to the directory samples/Calculator/deploy
+
+Use Project..Settings..Debug and check the path to the executable, check also the
+path to the working directory. Alter these to match your configuration.
+
+Run the project, and your SCA service should be called.
+
+Building the WSClient project
+=============================
+
+Modify the services.xml file, and make the SCA system root defined
+within it comply with your SCA system root.
+
+Set the active project to WSClient and build all.
+
+The last step of the build will run a wsdeploy script, which
+tries to use the environment variable AXIS2C_HOME, to create
+a services/Calculator directory, and deploy the services.xml file.
+The dll which resolves SCA services is called
+tuscany_sca_ws_service.dll - this will be copied to the axis
+tree by the same script file.
+
+To run the axis2 http server, go to the %AXIS2C_HOME%/bin
+directory, and launch the executable.
+
+Now verify that the path to the WSClient executable makes sense
+in your project settings, and run the project.
+
+
+Note
+====
+
+It can be quite hard to debug services which are invoked through axis, as the
+dll including the service is loaded on call. One useful technique is to
+load the axis http server in visual studio (create an empty project and make
+the executable path point to axis2_http_server.exe).
+Now use the Project..Settings..Debug..Addition DLLs option and add
+services/Calculator/tuscany_sca_ws_service.dll.
+You will now be able to set breakpoints in the dll (Axis2EntryPointService_invoke
+is a good place - in Axis2EntryPointService_skeleton.cpp).
+Run your WSclient from another debugger, and the server debugger will break
+on the service code.
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.dsw b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.dsw
new file mode 100644
index 0000000000..05f9141d98
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.dsw
@@ -0,0 +1,77 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Build"=.\Build\Build.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name Calculator
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name Client
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name WSClient
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "Calculator"=.\Calculator\Calculator.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name Client
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "Client"=.\Client\Client.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "WSClient"=.\WSClient\WSClient.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncb b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncb
new file mode 100644
index 0000000000..4b6b26f308
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncb
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.opt b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.opt
new file mode 100644
index 0000000000..2dbad4c658
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator.opt
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.dsp
new file mode 100644
index 0000000000..2dbc91fcf0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.dsp
@@ -0,0 +1,197 @@
+# Microsoft Developer Studio Project File - Name="Calculator" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Calculator - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Calculator.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Calculator.mak" CFG="Calculator - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Calculator - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Calculator - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Calculator - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CALCULATOR_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CALCULATOR_EXPORTS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca_cpp.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /machine:I386 /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\Calculator\deploy.bat ..\..\..\..\..\Calculator Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "Calculator - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CALCULATOR_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CALCULATOR_EXPORTS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca_cpp.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\Calculator\deploy.bat ..\..\..\..\..\Calculator Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "Calculator - Win32 Release"
+# Name "Calculator - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Wrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_divideService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Proxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Wrapper.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\Calculator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Wrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_divideService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\Divide.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Proxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Wrapper.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\CalculatorComposite\Calculator.wsdl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\CalculatorComposite\sca.composite
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\CalculatorSubsystem\sca.subsystem
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\CalculatorComposite\services.xml
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\..\..\Calculator\CalculatorComposite\Tuscany-model.config"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.mak
new file mode 100644
index 0000000000..c0ecc9fecf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.mak
@@ -0,0 +1,328 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on Calculator.dsp
+!IF "$(CFG)" == ""
+CFG=Calculator - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Calculator - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Calculator - Win32 Release" && "$(CFG)" != "Calculator - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Calculator.mak" CFG="Calculator - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Calculator - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Calculator - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "Calculator - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\Calculator.dll"
+
+!ELSE
+
+ALL : "Client - Win32 Release" "$(OUTDIR)\Calculator.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"Client - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\CalculatorImpl.obj"
+ -@erase "$(INTDIR)\CalculatorImpl_CalculatorService_Proxy.obj"
+ -@erase "$(INTDIR)\CalculatorImpl_CalculatorService_Wrapper.obj"
+ -@erase "$(INTDIR)\CalculatorImpl_divideService_Proxy.obj"
+ -@erase "$(INTDIR)\DivideImpl.obj"
+ -@erase "$(INTDIR)\DivideImpl_DivideService_Proxy.obj"
+ -@erase "$(INTDIR)\DivideImpl_DivideService_Wrapper.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\Calculator.dll"
+ -@erase "$(OUTDIR)\Calculator.exp"
+ -@erase "$(OUTDIR)\Calculator.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CALCULATOR_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\Calculator.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca_cpp.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\Calculator.pdb" /machine:I386 /out:"$(OUTDIR)\Calculator.dll" /implib:"$(OUTDIR)\Calculator.lib" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\CalculatorImpl.obj" \
+ "$(INTDIR)\CalculatorImpl_CalculatorService_Proxy.obj" \
+ "$(INTDIR)\CalculatorImpl_CalculatorService_Wrapper.obj" \
+ "$(INTDIR)\CalculatorImpl_divideService_Proxy.obj" \
+ "$(INTDIR)\DivideImpl.obj" \
+ "$(INTDIR)\DivideImpl_DivideService_Proxy.obj" \
+ "$(INTDIR)\DivideImpl_DivideService_Wrapper.obj"
+
+"$(OUTDIR)\Calculator.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "Client - Win32 Release" "$(OUTDIR)\Calculator.dll"
+ call ..\..\..\..\..\Calculator\deploy.bat ..\..\..\..\..\Calculator Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "Calculator - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\Calculator.dll"
+
+!ELSE
+
+ALL : "Client - Win32 Debug" "$(OUTDIR)\Calculator.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"Client - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\CalculatorImpl.obj"
+ -@erase "$(INTDIR)\CalculatorImpl_CalculatorService_Proxy.obj"
+ -@erase "$(INTDIR)\CalculatorImpl_CalculatorService_Wrapper.obj"
+ -@erase "$(INTDIR)\CalculatorImpl_divideService_Proxy.obj"
+ -@erase "$(INTDIR)\DivideImpl.obj"
+ -@erase "$(INTDIR)\DivideImpl_DivideService_Proxy.obj"
+ -@erase "$(INTDIR)\DivideImpl_DivideService_Wrapper.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\Calculator.dll"
+ -@erase "$(OUTDIR)\Calculator.exp"
+ -@erase "$(OUTDIR)\Calculator.ilk"
+ -@erase "$(OUTDIR)\Calculator.lib"
+ -@erase "$(OUTDIR)\Calculator.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CALCULATOR_EXPORTS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\Calculator.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sca_cpp.lib tuscany_sca.lib tuscany_sdo.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\Calculator.pdb" /debug /machine:I386 /out:"$(OUTDIR)\Calculator.dll" /implib:"$(OUTDIR)\Calculator.lib" /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\CalculatorImpl.obj" \
+ "$(INTDIR)\CalculatorImpl_CalculatorService_Proxy.obj" \
+ "$(INTDIR)\CalculatorImpl_CalculatorService_Wrapper.obj" \
+ "$(INTDIR)\CalculatorImpl_divideService_Proxy.obj" \
+ "$(INTDIR)\DivideImpl.obj" \
+ "$(INTDIR)\DivideImpl_DivideService_Proxy.obj" \
+ "$(INTDIR)\DivideImpl_DivideService_Wrapper.obj"
+
+"$(OUTDIR)\Calculator.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "Client - Win32 Debug" "$(OUTDIR)\Calculator.dll"
+ call ..\..\..\..\..\Calculator\deploy.bat ..\..\..\..\..\Calculator Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("Calculator.dep")
+!INCLUDE "Calculator.dep"
+!ELSE
+!MESSAGE Warning: cannot find "Calculator.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "Calculator - Win32 Release" || "$(CFG)" == "Calculator - Win32 Debug"
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl.cpp
+
+"$(INTDIR)\CalculatorImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Proxy.cpp
+
+"$(INTDIR)\CalculatorImpl_CalculatorService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Wrapper.cpp
+
+"$(INTDIR)\CalculatorImpl_CalculatorService_Wrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_divideService_Proxy.cpp
+
+"$(INTDIR)\CalculatorImpl_divideService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl.cpp
+
+"$(INTDIR)\DivideImpl.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Proxy.cpp
+
+"$(INTDIR)\DivideImpl_DivideService_Proxy.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Wrapper.cpp
+
+"$(INTDIR)\DivideImpl_DivideService_Wrapper.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!IF "$(CFG)" == "Calculator - Win32 Release"
+
+"Client - Win32 Release" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Release"
+ cd "..\Calculator"
+
+"Client - Win32 ReleaseCLEAN" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Release" RECURSE=1 CLEAN
+ cd "..\Calculator"
+
+!ELSEIF "$(CFG)" == "Calculator - Win32 Debug"
+
+"Client - Win32 Debug" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Debug"
+ cd "..\Calculator"
+
+"Client - Win32 DebugCLEAN" :
+ cd "..\Client"
+ $(MAKE) /$(MAKEFLAGS) /F .\Client.mak CFG="Client - Win32 Debug" RECURSE=1 CLEAN
+ cd "..\Calculator"
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.dsp
new file mode 100644
index 0000000000..2efa614a43
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.dsp
@@ -0,0 +1,113 @@
+# Microsoft Developer Studio Project File - Name="Client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Client.mak" CFG="Client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Client - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Client - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\Calculator\sample.calculator" /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /machine:I386 /out:"Release/calculator_client.exe" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\Calculator\deployclient.bat ..\..\..\..\..\Calculator Release call ..\..\..\..\..\scagen.bat ..\..\..\..\..\Calculator\sample.calculator
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "Client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\Calculator\sample.calculator" /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/calculator_client.exe" /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\Calculator\deployclient.bat ..\..\..\..\..\Calculator Debug call ..\..\..\..\..\scagen.bat ..\..\..\..\..\Calculator\sample.calculator
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "Client - Win32 Release"
+# Name "Client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.client\CalculatorClient.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.mak
new file mode 100644
index 0000000000..cef2af3f3f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.mak
@@ -0,0 +1,214 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on Client.dsp
+!IF "$(CFG)" == ""
+CFG=Client - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to Client - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "Client - Win32 Release" && "$(CFG)" != "Client - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Client.mak" CFG="Client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Client - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Client - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "Client - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\calculator_client.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\CalculatorClient.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\calculator_client.exe"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\Calculator\sample.calculator" /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\Client.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\calculator_client.pdb" /machine:I386 /out:"$(OUTDIR)\calculator_client.exe" /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\CalculatorClient.obj"
+
+"$(OUTDIR)\calculator_client.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\calculator_client.exe"
+ call ..\..\..\..\..\Calculator\deployclient.bat ..\..\..\..\..\Calculator Release
+ call ..\..\..\..\..\scagen.bat ..\..\..\..\..\Calculator\sample.calculator
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "Client - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\calculator_client.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\CalculatorClient.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\calculator_client.exe"
+ -@erase "$(OUTDIR)\calculator_client.ilk"
+ -@erase "$(OUTDIR)\calculator_client.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\Calculator\sample.calculator" /I "$(TUSCANY_SDOCPP)/include" /I "$(TUSCANY_SCACPP)/include" /I "$(TUSCANY_SCACPP)/extensions/cpp/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\Client.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\calculator_client.pdb" /debug /machine:I386 /out:"$(OUTDIR)\calculator_client.exe" /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)/lib" /libpath:"$(TUSCANY_SCACPP)/lib" /libpath:"$(TUSCANY_SCACPP)/extensions/cpp/lib"
+LINK32_OBJS= \
+ "$(INTDIR)\CalculatorClient.obj"
+
+"$(OUTDIR)\calculator_client.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\calculator_client.exe"
+ call ..\..\..\..\..\Calculator\deployclient.bat ..\..\..\..\..\Calculator Debug
+ call ..\..\..\..\..\scagen.bat ..\..\..\..\..\Calculator\sample.calculator
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("Client.dep")
+!INCLUDE "Client.dep"
+!ELSE
+!MESSAGE Warning: cannot find "Client.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "Client - Win32 Release" || "$(CFG)" == "Client - Win32 Debug"
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.client\CalculatorClient.cpp
+
+"$(INTDIR)\CalculatorClient.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.dsp b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.dsp
new file mode 100644
index 0000000000..0c5c7f825e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.dsp
@@ -0,0 +1,120 @@
+# Microsoft Developer Studio Project File - Name="WSClient" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=WSClient - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "WSClient.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "WSClient.mak" CFG="WSClient - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "WSClient - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "WSClient - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "WSClient - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /machine:I386 /out:"Release/calculator_wsclient.exe" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\Calculator\deploywsclient.bat ..\..\..\..\..\Calculator Release
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "WSClient - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/calculator_wsclient.exe" /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=call ..\..\..\..\..\Calculator\deploywsclient.bat ..\..\..\..\..\Calculator Debug
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "WSClient - Win32 Release"
+# Name "WSClient - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.wsclient\axis2_Calculator_stub.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.wsclient\CalculatorWSClient.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.wsclient\axis2_Calculator_stub.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.mak b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.mak
new file mode 100644
index 0000000000..366db95229
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.mak
@@ -0,0 +1,222 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on WSClient.dsp
+!IF "$(CFG)" == ""
+CFG=WSClient - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to WSClient - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "WSClient - Win32 Release" && "$(CFG)" != "WSClient - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "WSClient.mak" CFG="WSClient - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "WSClient - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "WSClient - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "WSClient - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+ALL : "$(OUTDIR)\calculator_wsclient.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\axis2_Calculator_stub.obj"
+ -@erase "$(INTDIR)\CalculatorWSClient.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(OUTDIR)\calculator_wsclient.exe"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\WSClient.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\calculator_wsclient.pdb" /machine:I386 /out:"$(OUTDIR)\calculator_wsclient.exe" /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\axis2_Calculator_stub.obj" \
+ "$(INTDIR)\CalculatorWSClient.obj"
+
+"$(OUTDIR)\calculator_wsclient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Release
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\calculator_wsclient.exe"
+ call ..\..\..\..\..\Calculator\deploywsclient.bat ..\..\..\..\..\Calculator Release
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ELSEIF "$(CFG)" == "WSClient - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "$(OUTDIR)\calculator_wsclient.exe"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\axis2_Calculator_stub.obj"
+ -@erase "$(INTDIR)\CalculatorWSClient.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\calculator_wsclient.exe"
+ -@erase "$(OUTDIR)\calculator_wsclient.ilk"
+ -@erase "$(OUTDIR)\calculator_wsclient.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "$(TUSCANY_SDOCPP)/include" /I "$(AXIS2C_HOME)/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\WSClient.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib tuscany_sdo.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\calculator_wsclient.pdb" /debug /machine:I386 /out:"$(OUTDIR)\calculator_wsclient.exe" /pdbtype:sept /libpath:"$(TUSCANY_SDOCPP)\lib" /libpath:"$(AXIS2C_HOME)\lib"
+LINK32_OBJS= \
+ "$(INTDIR)\axis2_Calculator_stub.obj" \
+ "$(INTDIR)\CalculatorWSClient.obj"
+
+"$(OUTDIR)\calculator_wsclient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE="$(InputPath)"
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\calculator_wsclient.exe"
+ call ..\..\..\..\..\Calculator\deploywsclient.bat ..\..\..\..\..\Calculator Debug
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("WSClient.dep")
+!INCLUDE "WSClient.dep"
+!ELSE
+!MESSAGE Warning: cannot find "WSClient.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "WSClient - Win32 Release" || "$(CFG)" == "WSClient - Win32 Debug"
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.wsclient\axis2_Calculator_stub.cpp
+
+"$(INTDIR)\axis2_Calculator_stub.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\..\..\Calculator\sample.calculator.wsclient\CalculatorWSClient.cpp
+
+"$(INTDIR)\CalculatorWSClient.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/build.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/build.cmd
new file mode 100644
index 0000000000..0cf0ac8e3e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/build.cmd
@@ -0,0 +1,24 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+call vcvars32
+cd Build
+nmake -f Build.mak CFG="Build - Win32 Release"
+cd ..
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/deploy.cmd
new file mode 100644
index 0000000000..6e956aa4e6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/deploy.cmd
@@ -0,0 +1,73 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA Calculator sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+
+set deploydir=%TUSCANY_SCACPP%\deploy
+set samplesdir=%deploydir%\samples
+set calcdir=%samplesdir%\Calculator
+set calcdeploydir=%calcdir%\deploy
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %samplesir% mkdir %samplesir%
+if not exist %calcdir% mkdir %calcdir%
+if not exist %calcdeploydir% mkdir %calcdeploydir%
+
+if not exist %destinationPath%\packages mkdir %destinationPath%\packages
+if not exist %destinationPath%\packages\CalculatorComposite mkdir %destinationPath%\packages\CalculatorComposite
+
+copy %sourcePath%\CalculatorComposite\*.componentType %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\*.composite %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\Calculator.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\CalculatorImpl.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\DivideService.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\DivideServiceImpl.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\Calculator.wsdl %destinationPath%\packages\CalculatorComposite
+copy %currentPath%\Calculator\%buildMode%\CalculatorComposite.dll %destinationPath%\packages\CalculatorComposite
+
+if not exist %destinationPath%\bin mkdir %destinationPath%\bin
+copy %currentPath%\Client\%buildMode%\Client.exe %destinationPath%\bin
+if %buildMode% == Debug (
+copy %currentPath%\Client\%buildMode%\Client.pdb %destinationPath%\bin
+)
+copy %sourcePath%\Client\runclient.cmd %destinationPath%\bin
+
+
+if not exist %destinationPath%\configuration mkdir %destinationPath%\configuration
+if not exist %destinationPath%\configuration\CalculatorSubsystem mkdir %destinationPath%\configuration\CalculatorSubsystem
+
+copy %sourcePath%\CalculatorSubsystem\*.composite %destinationPath%\configuration\CalculatorSubsystem
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/wsdeploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/wsdeploy.cmd
new file mode 100644
index 0000000000..5c4f5fac71
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio6/projects/Calculator/wsdeploy.cmd
@@ -0,0 +1,64 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA sample.
+setlocal
+set currentPath=%~d0%~p0
+set sourcePath=%currentPath%..\..\..\..\Calculator
+
+set buildMode=Release
+if .Debug == .%1 (
+set buildMode=Debug
+)
+
+
+if . == %2. (
+set destinationPath=%sourcePath%\deploy
+) ELSE (
+set destinationPath=%2
+)
+
+
+if not exist %destinationPath%\packages mkdir %destinationPath%\packages
+if not exist %destinationPath%\packages\CalculatorComposite mkdir %destinationPath%\packages\CalculatorComposite
+
+copy %sourcePath%\CalculatorComposite\*.componentType %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\*.composite %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\Calculator.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\CalculatorImpl.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\DivideService.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\DivideServiceImpl.h %destinationPath%\packages\CalculatorComposite
+copy %sourcePath%\CalculatorComposite\Calculator.wsdl %destinationPath%\packages\CalculatorComposite
+copy %currentPath%\Calculator\%buildMode%\CalculatorComposite.dll %destinationPath%\packages\CalculatorComposite
+
+if not exist %destinationPath%\bin mkdir %destinationPath%\bin
+copy %currentPath%\WSClient\%buildMode%\WSClient.exe %destinationPath%\bin
+if %buildMode% == Debug (
+copy %currentPath%\WSClient\%buildMode%\WSClient.pdb %destinationPath%\bin
+)
+copy %sourcePath%\WSClient\runwsclient.cmd %destinationPath%\bin
+
+
+if not exist %destinationPath%\configuration mkdir %destinationPath%\configuration
+if not exist %destinationPath%\configuration\CalculatorSubsystem mkdir %destinationPath%\configuration\CalculatorSubsystem
+
+copy %sourcePath%\CalculatorSubsystem\*.composite %destinationPath%\configuration\CalculatorSubsystem
+
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/AccountClient/AccountClient.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/AccountClient/AccountClient.vcproj
new file mode 100644
index 0000000000..bf9e9aa352
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/AccountClient/AccountClient.vcproj
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="AccountClient"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\..\BigBank\bigbank.account;&quot;$(TUSCANY_SDOCPP)/include&quot;;&quot;$(TUSCANY_SCACPP)\extensions\cpp\include&quot;;&quot;$(TUSCANY_SCACPP)/include&quot;"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/AccountClient.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="tuscany_sdo.lib tuscany_sca_cpp.lib tuscany_sca.lib"
+ OutputFile=".\Debug/AccountClient.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="&quot;$(TUSCANY_SCACPP)/lib&quot;;&quot;$(TUSCANY_SCACPP)/extensions/cpp/lib&quot;;&quot;$(TUSCANY_SDOCPP)/lib&quot;"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/AccountClient.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/AccountClient.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\BigBank\deployclient.bat ..\..\..\..\..\BigBank Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\..\..\BigBank\bigbank.account;&quot;$(TUSCANY_SDOCPP)/include&quot;;&quot;$(TUSCANY_SCACPP)\extensions\cpp\include&quot;;&quot;$(TUSCANY_SCACPP)/include&quot;"
+ PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/AccountClient.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="tuscany_sdo.lib tuscany_sca_cpp.lib tuscany_sca.lib"
+ OutputFile=".\Release/AccountClient.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="&quot;$(TUSCANY_SCACPP)/lib&quot;;&quot;$(TUSCANY_SCACPP)/extensions/cpp/lib&quot;;&quot;$(TUSCANY_SDOCPP)/lib&quot;"
+ ProgramDatabaseFile=".\Release/AccountClient.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/AccountClient.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\BigBank\deployclient.bat ..\..\..\..\..\BigBank Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.client\AccountClient.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/Accounts/Accounts.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/Accounts/Accounts.vcproj
new file mode 100644
index 0000000000..dbeb962b36
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/Accounts/Accounts.vcproj
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="Accounts"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)\include,$(TUSCANY_SCACPP)\extensions\cpp\include,$(TUSCANY_SDOCPP)\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;ACCOUNTS_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/Accounts.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sca_cpp.lib tuscany_sdo.lib"
+ OutputFile=".\Release/Account.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="&quot;$(TUSCANY_SCACPP)/extensions/cpp/lib&quot;;&quot;$(TUSCANY_SCACPP)/lib&quot;;&quot;$(TUSCANY_SDOCPP)/lib&quot;"
+ ProgramDatabaseFile=".\Release/Accounts.pdb"
+ ImportLibrary=".\Release/Accounts.lib"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/Accounts.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\BigBank\deploy.bat ..\..\..\..\..\BigBank Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(TUSCANY_SCACPP)/bin/scagen.cmd -dir ..\..\..\..\..\BigBank\bigbank.account -output ..\..\..\..\..\BigBank\bigbank.account -verbose"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)\include,$(TUSCANY_SCACPP)\extensions\cpp\include,$(TUSCANY_SDOCPP)\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;ACCOUNTS_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/Accounts.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sca_cpp.lib tuscany_sdo.lib"
+ OutputFile=".\Debug/Account.dll"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="&quot;$(TUSCANY_SCACPP)/extensions/cpp/lib&quot;;&quot;$(TUSCANY_SCACPP)/lib&quot;;&quot;$(TUSCANY_SDOCPP)/lib&quot;"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/Account.pdb"
+ ImportLibrary=".\Debug/Accounts.lib"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Accounts.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\BigBank\deploy.bat ..\..\..\..\..\BigBank Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(TUSCANY_SCACPP)/bin/scagen.cmd -dir ..\..\..\..\..\BigBank\bigbank.account -output ..\..\..\..\..\BigBank\bigbank.account -verbose"
+ ExcludedFromBuild="FALSE"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Wrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_accountDataService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Wrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_stockQuoteService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Wrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_webService_Proxy.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataService.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl_AccountDataService_Wrapper.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountService.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_accountDataService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_AccountService_Wrapper.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl_stockQuoteService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteService.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_StockQuoteService_Wrapper.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl_webService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteWebService.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountDataServiceImpl.componentType">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountService.wsdl">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\AccountServiceImpl.componentType">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\bigbank.account.composite">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.accountmanagement\bigbank.accountmanagement.composite">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteServiceImpl.componentType">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.account\StockQuoteWebService.wsdl">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/BigBank.sln b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/BigBank.sln
new file mode 100644
index 0000000000..26a497d219
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/BigBank.sln
@@ -0,0 +1,37 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AccountClient", "AccountClient\AccountClient.vcproj", "{297C9F3A-EDB1-4EA1-86ED-473B0863B996}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Accounts", "Accounts\Accounts.vcproj", "{87372DC7-582B-46C6-AA0F-960A47972503}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WSAccountClient", "WSAccountClient\WSAccountClient.vcproj", "{E7F4DDEC-6592-434B-B5D6-4E538298C898}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {297C9F3A-EDB1-4EA1-86ED-473B0863B996}.Debug.ActiveCfg = Debug|Win32
+ {297C9F3A-EDB1-4EA1-86ED-473B0863B996}.Debug.Build.0 = Debug|Win32
+ {297C9F3A-EDB1-4EA1-86ED-473B0863B996}.Release.ActiveCfg = Release|Win32
+ {297C9F3A-EDB1-4EA1-86ED-473B0863B996}.Release.Build.0 = Release|Win32
+ {87372DC7-582B-46C6-AA0F-960A47972503}.Debug.ActiveCfg = Debug|Win32
+ {87372DC7-582B-46C6-AA0F-960A47972503}.Debug.Build.0 = Debug|Win32
+ {87372DC7-582B-46C6-AA0F-960A47972503}.Release.ActiveCfg = Release|Win32
+ {87372DC7-582B-46C6-AA0F-960A47972503}.Release.Build.0 = Release|Win32
+ {E7F4DDEC-6592-434B-B5D6-4E538298C898}.Debug.ActiveCfg = Debug|Win32
+ {E7F4DDEC-6592-434B-B5D6-4E538298C898}.Debug.Build.0 = Debug|Win32
+ {E7F4DDEC-6592-434B-B5D6-4E538298C898}.Release.ActiveCfg = Release|Win32
+ {E7F4DDEC-6592-434B-B5D6-4E538298C898}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/WSAccountClient/WSAccountClient.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/WSAccountClient/WSAccountClient.vcproj
new file mode 100644
index 0000000000..ad6e7bfa89
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/BigBank/WSAccountClient/WSAccountClient.vcproj
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="WSAccountClient"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Release/WSAccountClient.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib"
+ OutputFile=".\Release/WSAccountClient.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)\lib,$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ ProgramDatabaseFile=".\Release/WSAccountClient.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/WSAccountClient.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\BigBank\deploywsclient.bat ..\..\..\..\..\BigBank Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/WSAccountClient.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib"
+ OutputFile=".\Debug/WSAccountClient.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)\lib,$(TUSCANY_SDOCPP)\lib,$(AXIS2C_HOME)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/WSAccountClient.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/WSAccountClient.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\BigBank\deploywsclient.bat ..\..\..\..\..\BigBank Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.wsclient\AccountWSClient.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.wsclient\axis2_Account_stub.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="..\..\..\..\..\BigBank\bigbank.wsclient\axis2_Account_stub.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.sln b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.sln
new file mode 100644
index 0000000000..271c1ae327
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.sln
@@ -0,0 +1,39 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Calculator", "Calculator\Calculator.vcproj", "{B1C1917A-4423-456D-9F68-3C600C885A1F}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Client", "Client\Client.vcproj", "{CA2CB545-D0E2-416C-BE93-90BC4DD82B90}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B1C1917A-4423-456D-9F68-3C600C885A1F} = {B1C1917A-4423-456D-9F68-3C600C885A1F}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WSClient", "WSClient\WSClient.vcproj", "{3CDD5BC2-9722-4F7D-8B0E-1A49D34E7A17}"
+ ProjectSection(ProjectDependencies) = postProject
+ {B1C1917A-4423-456D-9F68-3C600C885A1F} = {B1C1917A-4423-456D-9F68-3C600C885A1F}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {B1C1917A-4423-456D-9F68-3C600C885A1F}.Debug.ActiveCfg = Debug|Win32
+ {B1C1917A-4423-456D-9F68-3C600C885A1F}.Debug.Build.0 = Debug|Win32
+ {B1C1917A-4423-456D-9F68-3C600C885A1F}.Release.ActiveCfg = Release|Win32
+ {B1C1917A-4423-456D-9F68-3C600C885A1F}.Release.Build.0 = Release|Win32
+ {CA2CB545-D0E2-416C-BE93-90BC4DD82B90}.Debug.ActiveCfg = Debug|Win32
+ {CA2CB545-D0E2-416C-BE93-90BC4DD82B90}.Debug.Build.0 = Debug|Win32
+ {CA2CB545-D0E2-416C-BE93-90BC4DD82B90}.Release.ActiveCfg = Release|Win32
+ {CA2CB545-D0E2-416C-BE93-90BC4DD82B90}.Release.Build.0 = Release|Win32
+ {3CDD5BC2-9722-4F7D-8B0E-1A49D34E7A17}.Debug.ActiveCfg = Debug|Win32
+ {3CDD5BC2-9722-4F7D-8B0E-1A49D34E7A17}.Debug.Build.0 = Debug|Win32
+ {3CDD5BC2-9722-4F7D-8B0E-1A49D34E7A17}.Release.ActiveCfg = Release|Win32
+ {3CDD5BC2-9722-4F7D-8B0E-1A49D34E7A17}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suo b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suo
new file mode 100644
index 0000000000..bf0864adfe
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suo
Binary files differ
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator/Calculator.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator/Calculator.vcproj
new file mode 100644
index 0000000000..a2b02ca4d9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Calculator/Calculator.vcproj
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="Calculator"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SDOCPP)/include,$(TUSCANY_SCACPP)/include,$(TUSCANY_SCACPP)/extensions/cpp/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;CALCULATOR_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Debug/Calculator.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib tuscany_sca_cpp.lib"
+ OutputFile=".\Debug/Calculator.dll"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)/lib,$(TUSCANY_SCACPP)/lib,$(TUSCANY_SCACPP)/extensions/cpp/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/Calculator.pdb"
+ ImportLibrary=".\Debug/Calculator.lib"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Calculator.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\Calculator\deploy.bat ..\..\..\..\..\Calculator Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(TUSCANY_SCACPP)/bin/scagen.cmd -dir ../../../../../Calculator/sample.calculator -output ../../../../../Calculator/sample.calculator -verbose"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="$(TUSCANY_SDOCPP)/include,$(TUSCANY_SCACPP)/include,$(TUSCANY_SCACPP)/extensions/cpp/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;CALCULATOR_EXPORTS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Release/Calculator.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="odbc32.lib odbccp32.lib tuscany_sca.lib tuscany_sdo.lib tuscany_sca_cpp.lib"
+ OutputFile=".\Release/Calculator.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)/lib,$(TUSCANY_SCACPP)/lib,,$(TUSCANY_SCACPP)/extensions/cpp/lib"
+ ProgramDatabaseFile=".\Release/Calculator.pdb"
+ ImportLibrary=".\Release/Calculator.lib"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/Calculator.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\Calculator\deploy.bat ..\..\..\..\..\Calculator Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(TUSCANY_SCACPP)/bin/scagen.cmd -dir ../../../../../Calculator/sample.calculator -output ../../../../../Calculator/sample.calculator -verbose"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\Calculator.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Wrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_CalculatorService_Wrapper.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_divideService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl_divideService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\Divide.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Proxy.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Wrapper.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl_DivideService_Wrapper.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\Calculator.wsdl">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\CalculatorImpl.componentType">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\DivideImpl.componentType">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator\sample.calculator.composite">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Client/Client.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Client/Client.vcproj
new file mode 100644
index 0000000000..a53a3eccf3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/Client/Client.vcproj
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="Client"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\..\Calculator\sample.calculator,$(TUSCANY_SDOCPP)/include,$(TUSCANY_SCACPP)/include,$(TUSCANY_SCACPP)/extensions/cpp/include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ PrecompiledHeaderFile=".\Debug/Client.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib"
+ OutputFile="./Debug/calculator_client.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)/lib,$(TUSCANY_SCACPP)/lib,$(TUSCANY_SCACPP)/extensions/cpp/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/calculator_client.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/Client.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\Calculator\deployclient.bat ..\..\..\..\..\Calculator Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\..\..\Calculator\sample.calculator,$(TUSCANY_SDOCPP)/include,$(TUSCANY_SCACPP)/include,$(TUSCANY_SCACPP)/extensions/cpp/include"
+ PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Release/Client.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="odbc32.lib odbccp32.lib tuscany_sdo.lib tuscany_sca.lib tuscany_sca_cpp.lib"
+ OutputFile=".\Release/calculator_client.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)/lib,$(TUSCANY_SCACPP)/lib,$(TUSCANY_SCACPP)/extensions/cpp/lib"
+ ProgramDatabaseFile=".\Release/calculator_client.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/Client.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\Calculator\deployclient.bat ..\..\..\..\..\Calculator Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator.client\CalculatorClient.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/BuildInstructions.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/BuildInstructions.txt
new file mode 100644
index 0000000000..6757f3ad3a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/BuildInstructions.txt
@@ -0,0 +1,95 @@
+
+These sample projects will build:
+
+A basic calculator SCA service.
+A client to test that service.
+A WSClient to test the service as exposed by AXIS2C as a web service.
+
+The sample depdends on the current versions of Tuscany SDO and Tuscany SCA, which in turn
+depend on axis2c version 0.92, and libxml2. See the SCA and SDO project installation
+details.
+
+The sample already has the pre-generated proxy and wrapper code in it, but should
+you need to regenerate these, you will need the command line tool "scagen" which is
+part of the Tuscany SCA project.
+
+The projects expect to following environment variables to be set:
+TUSCANY_SCACPP:
+The directory in which the sca runtime is deployed - probably something ending in sca/deploy.
+
+TUSCANY_SDOCPP:
+The directory where the sdo runtime is deployed - probably something ending in sdo/deploy.
+
+TUSCANY_SCACPP_DEFAULT_COMPOSITE:
+This is the default composite to be loaded by SCA. It consists of <subsystem>/<component>.
+In the case of this sample - its set programatically by the client - thats easier when
+using visual studio.
+
+TUSCANY_SCACPP_SYSTEM_ROOT
+This is the point from which SCA will start looking for composites to load. Again this is
+set programmatically by the sample.
+
+AXIS2C_HOME:
+This is where axis2c is deployed- this is only required by the WSClient project.
+
+The Calculator project contains a simple calculator service, and the descriptive files
+which help the runtime to find the service.
+
+
+Rebuilding the proxy and wrapper classes
+========================================
+
+If required, go to the Calculator sample main directory, and
+type:
+"scagen -dir CalculatorComposite -output CalculatorComposite"
+
+The generated code is put into the CalculatorComposite subdirectory.
+
+Building the Client project
+===========================
+
+Set the active project to be "Client", and then build all.
+This will re-build Calculator, then rebuild the Client,
+The final step of the build will call a batch file "deploy.cmd",
+which copies all the required files to the directory samples/Calculator/deploy
+
+Use Project..Settings..Debug and check the path to the executable, check also the
+path to the working directory. Alter these to match your configuration.
+
+Run the project, and your SCA service should be called.
+
+Building the WSClient project
+=============================
+
+Modify the services.xml file, and make the SCA system root defined
+within it comply with your SCA system root.
+
+Set the active project to WSClient and build all.
+
+The last step of the build will run a wsdeploy script, which
+tries to use the environment variable AXIS2C_HOME, to create
+a services/Calculator directory, and deploy the services.xml file.
+The dll which resolves SCA services is called
+tuscany_sca_ws_service.dll - this will be copied to the axis
+tree by the same script file.
+
+To run the axis2 http server, go to the %AXIS2C_HOME%/bin
+directory, and launch the executable.
+
+Now verify that the path to the WSClient executable makes sense
+in your project settings, and run the project.
+
+
+Note
+====
+
+It can be quite hard to debug services which are invoked through axis, as the
+dll including the service is loaded on call. One useful technique is to
+load the axis http server in visual studio (create an empty project and make
+the executable path point to axis2_http_server.exe).
+Now use the Project..Settings..Debug..Addition DLLs option and add
+services/Calculator/tuscany_sca_ws_service.dll.
+You will now be able to set breakpoints in the dll (Axis2EntryPointService_invoke
+is a good place - in Axis2EntryPointService_skeleton.cpp).
+Run your WSclient from another debugger, and the server debugger will break
+on the service code.
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/WSClient.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/WSClient.vcproj
new file mode 100644
index 0000000000..585d66bdbf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/ides/devstudio7/projects/Calculator/WSClient/WSClient.vcproj
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="WSClient"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Debug/WSClient.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="odbc32.lib odbccp32.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib"
+ OutputFile=".\Debug/calculator_wsclient.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(AXIS2C_HOME)\lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/calculator_wsclient.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/WSClient.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\Calculator\deploywsclient.bat ..\..\..\..\..\Calculator Debug"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="4"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Release/WSClient.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/MACHINE:I386"
+ AdditionalDependencies="odbc32.lib odbccp32.lib axis2_engine.lib axis2_parser.lib axis2_util.lib axiom.lib"
+ OutputFile=".\Release/calculator_wsclient.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="$(AXIS2C_HOME)\lib"
+ ProgramDatabaseFile=".\Release/calculator_wsclient.pdb"
+ SubSystem="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/WSClient.tlb"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\..\..\..\Calculator\deploywsclient.bat ..\..\..\..\..\Calculator Release"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator.wsclient\axis2_Calculator_stub.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator.wsclient\axis2_Calculator_stub.h">
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator.wsclient\CalculatorWSClient.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="..\..\..\..\..\Calculator\sample.calculator.wsclient\services.xml">
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\BuildInstructions.txt">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/samples/scagen.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/scagen.bat
new file mode 100644
index 0000000000..a717341086
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/samples/scagen.bat
@@ -0,0 +1,37 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA Calculator sample.
+
+setlocal
+
+if . == .%1 (
+echo source path not specified
+goto usage
+)
+set srcdir=%1
+
+%TUSCANY_SCACPP%\bin\scagen.cmd -dir %srcdir% -output %srcdir% -verbose
+
+goto end
+:usage
+echo Usage: scagen <sample-src>
+:end
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/scatest.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/scatest.bat
new file mode 100644
index 0000000000..d749d5e084
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/scatest.bat
@@ -0,0 +1,47 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+@setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+set TUSCANY_SCACPP=%cd%\deploy
+)
+echo using TUSCANY_SCACPP: %TUSCANY_SCACPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C: %AXIS2C_HOME%"
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using TUSCANY_SDOCPP: %TUSCANY_SDOCPP%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%cd%\projects\tuscany_sca\tuscany_sca_test\testSCASystem
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd projects\tuscany_sca\tuscany_sca_test
+Release\tuscany_sca_test
+:end
+@endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/scatest.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/scatest.sh
new file mode 100755
index 0000000000..45d5367550
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/scatest.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+SCA4CPP_HOME=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_ROOT=$SCA4CPP_HOME/runtime/core/test
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_ROOT
+
+if [ `uname -s` = Darwin ]
+then
+ export DYLD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$DYLD_LIBRARY_PATH
+else
+ export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+fi
+
+cd $TUSCANY_SCACPP/bin/test
+./tuscany_sca_test
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/AUTHORS b/tags/cpp-1.0-incubating-M2-RC2/sca/test/AUTHORS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/AUTHORS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/COPYING b/tags/cpp-1.0-incubating-M2-RC2/sca/test/COPYING
new file mode 100755
index 0000000000..6b0b1270ff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/COPYING
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ChangeLog b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ChangeLog
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ChangeLog
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/INSTALL b/tags/cpp-1.0-incubating-M2-RC2/sca/test/INSTALL
new file mode 100644
index 0000000000..b8a53409ed
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/INSTALL
@@ -0,0 +1,10 @@
+Building and installing the Tuscany SCA for C++ tests
+-----------------------------------------------------
+
+Run the following commands from the tuscany/cpp/sca directory:
+
+./autogen.sh
+./build.sh
+
+The deployed tests should be in tuscany/cpp/sca/deploy/test
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/LICENSE b/tags/cpp-1.0-incubating-M2-RC2/sca/test/LICENSE
new file mode 100755
index 0000000000..f433b1a53f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/test/Makefile.am
new file mode 100644
index 0000000000..24292e8033
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = ws.service.interop
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/NEWS b/tags/cpp-1.0-incubating-M2-RC2/sca/test/NEWS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/NEWS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/NOTICE b/tags/cpp-1.0-incubating-M2-RC2/sca/test/NOTICE
new file mode 100644
index 0000000000..bfb81409ad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/NOTICE
@@ -0,0 +1,2 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/) \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/README b/tags/cpp-1.0-incubating-M2-RC2/sca/test/README
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/README
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.c b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.c
new file mode 100644
index 0000000000..115858f09a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.c
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <axiom.h>
+#include <axis2_util.h>
+#include <axiom_soap.h>
+#include <axis2_client.h>
+
+axiom_node_t *
+build_om_payload_for_WSEntryPointTestRPC_svc(axis2_env_t *env);
+
+
+int main(int argc, char** argv)
+{
+ axis2_env_t *env = NULL;
+ axis2_char_t *address = NULL;
+ axis2_endpoint_ref_t* endpoint_ref = NULL;
+ axis2_options_t *options = NULL;
+ axis2_char_t *client_home = NULL;
+ axis2_svc_client_t* svc_client = NULL;
+ axiom_node_t *payload = NULL;
+ axiom_node_t *ret_node = NULL;
+
+ /* Set up the envioronment */
+ env = axis2_env_create_all("wsentrypointtestrpc.log", AXIS2_LOG_LEVEL_TRACE);
+
+ /* Set end point reference of echo service */
+ address = "http://localhost:9090/axis2/services/WSEntryPointTestRPC";
+ if (argc > 1 )
+ address = argv[1];
+ if (AXIS2_STRCMP(address, "-h") == 0)
+ {
+ printf("Usage : %s [endpoint_url]\n", argv[0]);
+ printf("use -h for help\n");
+ return 0;
+ }
+ printf ("Using endpoint : %s\n", address);
+
+ /* Create EPR with given address */
+ endpoint_ref = axis2_endpoint_ref_create(env, address);
+
+ /* Setup options */
+ options = axis2_options_create(env);
+ AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref);
+ AXIS2_OPTIONS_SET_ACTION(options, env,
+ "http://www.WSEntryPointTest.org/WSEntryPointTestRPC/doString");
+
+ /* Set up deploy folder. It is from the deploy folder, the configuration is picked up
+ * using the axis2.xml file.
+ * In this sample client_home points to the Axis2/C default deploy folder. The client_home can
+ * be different from this folder on your system. For example, you may have a different folder
+ * (say, my_client_folder) with its own axis2.xml file. my_client_folder/packages will have the
+ * composites that the client uses
+ */
+ client_home = AXIS2_GETENV("AXIS2C_HOME");
+ if (!client_home)
+ {
+ printf("Please ensure AXIS2C_HOME is set as an env variable\n");
+ return 0;
+ }
+
+ /* Create service client */
+ svc_client = axis2_svc_client_create(env, client_home);
+ if (!svc_client)
+ {
+ printf("Error creating service client\n");
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ }
+
+ /* Set service client options */
+ AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, &env, options);
+
+ /* Engage addressing composite */
+ AXIS2_SVC_CLIENT_ENGAGE_COMPOSITE(svc_client, &env, AXIS2_COMPOSITE_ADDRESSING);
+
+ /* Build the SOAP request message payload using OM API.*/
+ payload = build_om_payload_for_WSEntryPointTestRPC_svc(env);
+
+ /* Send request */
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, payload);
+
+ if(ret_node)
+ {
+ axis2_char_t *om_str = NULL;
+ om_str = AXIOM_NODE_TO_STRING(ret_node, env);
+ if (om_str)
+ printf("\nReceived OM : %s\n", om_str);
+ printf("\nWSEntryPointTestRPC client invoke SUCCESSFUL!\n");
+ }
+ else
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ printf("WSEntryPointTestRPC client invoke FAILED!\n");
+ }
+
+ if (svc_client)
+ {
+ AXIS2_SVC_CLIENT_FREE(svc_client, env);
+ svc_client = NULL;
+ }
+ if (endpoint_ref)
+ {
+ AXIS2_ENDPOINT_REF_FREE(endpoint_ref, &env);
+ endpoint_ref = NULL;
+ }
+ return 0;
+}
+
+/* build SOAP request message content using OM */
+axiom_node_t *
+build_om_payload_for_WSEntryPointTestRPC_svc(axis2_env_t *env)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_element_t* req_om_elem = NULL;
+ axiom_node_t* param_om_node = NULL;
+ axiom_element_t* param_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.WSEntryPointTest.org/WSEntryPointTestRPC/", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, "doString", ns1, &req_om_node);
+ param_om_elem = axiom_element_create(env, req_om_node, "doStringRequest", ns1, &param_om_node);
+ AXIOM_ELEMENT_SET_TEXT(param_om_elem, env, "WSEntryPointTestRPC Client Call", param_om_node);
+
+ om_str = AXIOM_NODE_TO_STRING(req_om_node, env);
+ if (om_str)
+ printf("\nSending OM : %s\n", om_str);
+
+ return req_om_node;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.vcproj
new file mode 100644
index 0000000000..5c48a3a683
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.vcproj
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="WSEntryPointTestRPCClient"
+ ProjectGUID="{F0972250-9F56-45B3-AFB9-0A4124A8B3D2}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axiom.lib axis2_engine.lib axis2_parser.lib axis2_util.lib"
+ OutputFile="$(OutDir)/WSEntryPointTestRPCClient.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(AXIS2C_HOME)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/WSEntryPointTestRPCClient.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/WSEntryPointTestRPCClient.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\WSEntryPointTestRPCClient.c">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h
new file mode 100644
index 0000000000..c804494b46
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h
@@ -0,0 +1,30 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef WSEENTRYPOINTTESTRPC_H
+#define WSEENTRYPOINTTESTRPC_H
+class WSCompositeServiceTestRPC
+{
+public:
+ virtual char* doString(char* arg1) = 0;
+};
+
+#endif
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl
new file mode 100644
index 0000000000..1706534042
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WSEntryPointTestRPC" targetNamespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/">
+
+ <wsdl:types>
+ <xs:schema targetNamespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/"
+ elementFormDefault="qualified">
+
+ <xs:element name="doStringRequest">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="doStringResponse">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:element>
+
+ </xs:schema>
+ </wsdl:types>
+
+ <wsdl:message name="doStringResponseMsg">
+ <wsdl:part name="doStringResponse" element="tns:doStringResponse"/>
+ </wsdl:message>
+ <wsdl:message name="doStringRequestMsg">
+ <wsdl:part name="doStringRequest" element="tns:doStringRequest"/>
+ </wsdl:message>
+
+<!--
+ <wsdl:message name="doStringResponseMsg">
+ <wsdl:part name="doStringResponse" type="xsd:string"/>
+ </wsdl:message>
+ <wsdl:message name="doStringRequestMsg">
+ <wsdl:part name="doStringRequest" type="xsd:string"/>
+ </wsdl:message>
+-->
+ <wsdl:portType name="WSEntryPointTestRPC">
+ <wsdl:operation name="doString">
+ <wsdl:input message="tns:doStringRequestMsg"/>
+ <wsdl:output message="tns:doStringResponseMsg"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="WSEntryPointTestRPCSOAP" type="tns:WSEntryPointTestRPC">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="doString">
+ <soap:operation soapAction="WSEntryPointTestRPC/doString"/>
+ <wsdl:input>
+ <soap:body namespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/" use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body namespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/" use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="WSEntryPointTestRPC">
+ <wsdl:port binding="tns:WSEntryPointTestRPCSOAP" name="WSEntryPointTestRPCSOAP">
+ <soap:address location="http://localhost:9090/axis2/services/WSEntryPointTestRPC"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCComposite.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCComposite.vcproj
new file mode 100644
index 0000000000..f82221700b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCComposite.vcproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="WSEntryPointTestRPCComposite"
+ ProjectGUID="{6F98DD05-6B3D-4C06-9E1C-AF3256DCA7EA}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)/include,$(TUSCANY_SDOCPP)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;WSENTRYPOINTTESTRPCCOMPOSITE_EXPORTS"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib"
+ OutputFile="$(OutDir)/WSEntryPointTestRPCComposite.dll"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib,$(TUSCANY_SDOCPP)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/WSEntryPointTestRPCComposite.pdb"
+ SubSystem="2"
+ ImportLibrary="$(OutDir)/WSEntryPointTestRPCComposite.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;WSENTRYPOINTTESTRPCCOMPOSITE_EXPORTS"
+ RuntimeLibrary="0"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/WSEntryPointTestRPCComposite.dll"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(OutDir)/WSEntryPointTestRPCComposite.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl.cpp">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ <File
+ RelativePath=".\WSEntryPointTestRPC.h">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl.h">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ <File
+ RelativePath=".\sca.composite">
+ </File>
+ <File
+ RelativePath=".\services.xml">
+ </File>
+ <File
+ RelativePath=".\Tuscany-model.config">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPC.wsdl">
+ </File>
+ <File
+ RelativePath=".\WSEntryPointTestRPCImpl.componentType">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType
new file mode 100644
index 0000000000..15287150e0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ASCII"?>
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="WSEntryPointTestRPCService">
+ <interface.cpp header="WSEntryPointTestRPC.h">
+ </interface.cpp>
+ </service>
+
+</componentType>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.cpp
new file mode 100644
index 0000000000..e2ca28345d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.cpp
@@ -0,0 +1,38 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#include "WSCompositeServiceTestRPCImpl.h"
+#include <stdio.h>
+
+WSCompositeServiceTestRPCImpl::WSCompositeServiceTestRPCImpl()
+{
+}
+
+WSCompositeServiceTestRPCImpl::~WSCompositeServiceTestRPCImpl()
+{
+}
+
+// WSCompositeServiceTestRPC interface
+char* WSCompositeServiceTestRPCImpl::doString(char* arg1)
+{
+ printf("WSCompositeServiceTestRPCImpl::doString %s\n", arg1);
+
+ return "WSCompositeServiceTestRPCImpl::doString response";
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h
new file mode 100644
index 0000000000..7d3b355b8a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h
@@ -0,0 +1,36 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef WSEENTRYPOINTTESTRPCIMPL_H
+#define WSEENTRYPOINTTESTRPCIMPL_H
+
+#include "WSCompositeServiceTestRPC.h"
+
+class WSCompositeServiceTestRPCImpl : public WSCompositeServiceTestRPC
+{
+public:
+ WSCompositeServiceTestRPCImpl();
+ virtual ~WSCompositeServiceTestRPCImpl();
+
+ // WSCompositeServiceTestRPC interface
+ virtual char* doString(char* arg1);
+};
+
+#endif
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp
new file mode 100644
index 0000000000..f38fd95c79
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy* WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy_Destructor(void* proxy)
+ {
+ delete (WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy*)proxy;
+ }
+}
+
+WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy::WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy::~WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+char* WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy::doString( char* arg0)
+{
+ Operation operation("doString");
+ operation.addParameter(&arg0);
+ char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h
new file mode 100644
index 0000000000..a2da07322c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy_h
+#define WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy_h
+
+#include "WSCompositeServiceTestRPC.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy : public WSCompositeServiceTestRPC
+{
+public:
+ WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy();
+ virtual char* doString( char* arg1);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp
new file mode 100644
index 0000000000..93f6cf7a28
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper* WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper(target);
+ }
+}
+
+WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper::WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (WSCompositeServiceTestRPCImpl*)getImplementation();
+}
+
+WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper::~WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper::newImplementation()
+{
+ return new WSCompositeServiceTestRPCImpl;
+}
+
+void WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "doString")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ *(char**)operation.getReturnValue() = impl->doString(p0);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h
new file mode 100644
index 0000000000..3f7b011749
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper_h
+#define WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper_h
+
+#include "WSCompositeServiceTestRPCImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ WSCompositeServiceTestRPCImpl* impl;
+};
+
+#endif // WSCompositeServiceTestRPCImpl_WSCompositeServiceTestRPCService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/sca.composite
new file mode 100644
index 0000000000..f454a5bde0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/sca.composite
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ASCII"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ name="WSEntryPointTestRPCComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="WSEntryPointTestRPCEntrypoint" multiplicity="1..1">
+ <interface.wsdl interface="WSEntryPointTestRPC.wsdl" callbackInterface=""></interface.wsdl>
+ <binding.ws port="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/#wsdl.endpoint(WSEntryPointTestRPC/WSEntryPointTestRPCSOAP)"></binding.ws>
+ <reference>WSEntryPointTestRPCServiceComponent</reference>
+ </entryPoint>
+
+
+ <component name="WSEntryPointTestRPCServiceComponent">
+ <implementation.cpp dll="WSEntryPointTestRPCComposite.dll" header="WSEntryPointTestRPCImpl.h"></implementation.cpp>
+ <properties> </properties>
+ <references> </references>
+ </component>
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/services.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/services.xml
new file mode 100644
index 0000000000..2fd4580526
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/services.xml
@@ -0,0 +1,30 @@
+
+<!--
+ Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<service name="WSEntryPointTestRPC">
+ <parameter name="ServiceClass" locked="xsd:false">tuscany_sca</parameter>
+ <parameter name="TuscanySystemRoot" locked="xsd:false">D:/tuscany/cpp/sca/test/WSEntryPointTestRPC/runtime</parameter>
+ <parameter name="TuscanyEntryPoint" locked="xsd:false">WSEntryPointTestRPCSubsystem/WSEntryPointTestRPCService/WSEntryPointTestRPCEntrypoint</parameter>
+
+ <description>
+ This is a testing service , to test the system is working or not
+ </description>
+
+ <operation name="doString">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+
+</service>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCSubsystem/sca.subsystem b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCSubsystem/sca.subsystem
new file mode 100644
index 0000000000..91d3105f5b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCSubsystem/sca.subsystem
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9" name="WSEntryPointTestRPCSubsystem">
+
+ <compositeComponent name="WSEntryPointTestRPCService" composite="WSEntryPointTestRPCComposite" />
+
+</subsystem>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/configuration/WSEntryPointTestRPCSubsystem/sca.subsystem b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/configuration/WSEntryPointTestRPCSubsystem/sca.subsystem
new file mode 100644
index 0000000000..91d3105f5b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/configuration/WSEntryPointTestRPCSubsystem/sca.subsystem
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9" name="WSEntryPointTestRPCSubsystem">
+
+ <compositeComponent name="WSEntryPointTestRPCService" composite="WSEntryPointTestRPCComposite" />
+
+</subsystem>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h
new file mode 100644
index 0000000000..c804494b46
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h
@@ -0,0 +1,30 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef WSEENTRYPOINTTESTRPC_H
+#define WSEENTRYPOINTTESTRPC_H
+class WSCompositeServiceTestRPC
+{
+public:
+ virtual char* doString(char* arg1) = 0;
+};
+
+#endif
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl
new file mode 100644
index 0000000000..1706534042
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WSEntryPointTestRPC" targetNamespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/">
+
+ <wsdl:types>
+ <xs:schema targetNamespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/"
+ elementFormDefault="qualified">
+
+ <xs:element name="doStringRequest">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="doStringResponse">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:element>
+
+ </xs:schema>
+ </wsdl:types>
+
+ <wsdl:message name="doStringResponseMsg">
+ <wsdl:part name="doStringResponse" element="tns:doStringResponse"/>
+ </wsdl:message>
+ <wsdl:message name="doStringRequestMsg">
+ <wsdl:part name="doStringRequest" element="tns:doStringRequest"/>
+ </wsdl:message>
+
+<!--
+ <wsdl:message name="doStringResponseMsg">
+ <wsdl:part name="doStringResponse" type="xsd:string"/>
+ </wsdl:message>
+ <wsdl:message name="doStringRequestMsg">
+ <wsdl:part name="doStringRequest" type="xsd:string"/>
+ </wsdl:message>
+-->
+ <wsdl:portType name="WSEntryPointTestRPC">
+ <wsdl:operation name="doString">
+ <wsdl:input message="tns:doStringRequestMsg"/>
+ <wsdl:output message="tns:doStringResponseMsg"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="WSEntryPointTestRPCSOAP" type="tns:WSEntryPointTestRPC">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="doString">
+ <soap:operation soapAction="WSEntryPointTestRPC/doString"/>
+ <wsdl:input>
+ <soap:body namespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/" use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body namespace="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/" use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="WSEntryPointTestRPC">
+ <wsdl:port binding="tns:WSEntryPointTestRPCSOAP" name="WSEntryPointTestRPCSOAP">
+ <soap:address location="http://localhost:9090/axis2/services/WSEntryPointTestRPC"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType
new file mode 100644
index 0000000000..15287150e0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ASCII"?>
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="WSEntryPointTestRPCService">
+ <interface.cpp header="WSEntryPointTestRPC.h">
+ </interface.cpp>
+ </service>
+
+</componentType>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h
new file mode 100644
index 0000000000..7d3b355b8a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h
@@ -0,0 +1,36 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef WSEENTRYPOINTTESTRPCIMPL_H
+#define WSEENTRYPOINTTESTRPCIMPL_H
+
+#include "WSCompositeServiceTestRPC.h"
+
+class WSCompositeServiceTestRPCImpl : public WSCompositeServiceTestRPC
+{
+public:
+ WSCompositeServiceTestRPCImpl();
+ virtual ~WSCompositeServiceTestRPCImpl();
+
+ // WSCompositeServiceTestRPC interface
+ virtual char* doString(char* arg1);
+};
+
+#endif
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/sca.composite
new file mode 100644
index 0000000000..f454a5bde0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/sca.composite
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ASCII"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ name="WSEntryPointTestRPCComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="WSEntryPointTestRPCEntrypoint" multiplicity="1..1">
+ <interface.wsdl interface="WSEntryPointTestRPC.wsdl" callbackInterface=""></interface.wsdl>
+ <binding.ws port="http://www.WSEntryPointTest.org/WSEntryPointTestRPC/#wsdl.endpoint(WSEntryPointTestRPC/WSEntryPointTestRPCSOAP)"></binding.ws>
+ <reference>WSEntryPointTestRPCServiceComponent</reference>
+ </entryPoint>
+
+
+ <component name="WSEntryPointTestRPCServiceComponent">
+ <implementation.cpp dll="WSEntryPointTestRPCComposite.dll" header="WSEntryPointTestRPCImpl.h"></implementation.cpp>
+ <properties> </properties>
+ <references> </references>
+ </component>
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/autogen.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/test/autogen.sh
new file mode 100755
index 0000000000..af38864985
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/autogen.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+for i in "libtoolize --force" aclocal autoconf autoheader
+do
+ echo -n "Running $i..."
+ $i || exit 1
+ echo 'done.'
+done
+
+echo -n 'Running automake...'
+automake --add-missing
+echo 'done.'
+exit 0
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/build.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/test/build.sh
new file mode 100755
index 0000000000..7a3c439e8b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/build.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+./configure --prefix=${TUSCANY_SCACPP} --enable-static=no
+make
+make install
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/configure.ac b/tags/cpp-1.0-incubating-M2-RC2/sca/test/configure.ac
new file mode 100644
index 0000000000..f84c32ab1e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/configure.ac
@@ -0,0 +1,34 @@
+dnl run autogen.sh to generate the configure script.
+
+AC_PREREQ(2.59)
+AC_INIT(tuscany_sca_tests, 0.1.incubating-M1)
+AC_CANONICAL_SYSTEM
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+AC_PREFIX_DEFAULT(/usr/local/tuscany/sca/test)
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
+
+# Check for dynamic library suffixes
+AC_MSG_CHECKING([checking for dynamic library suffix])
+AC_CHECK_HEADER([sys/appleapiopts.h],
+ [AC_SUBST([libsuffix],[".dylib"]) AC_MSG_RESULT([using .dylib])],
+ [AC_SUBST([libsuffix],[".so"]) AC_MSG_RESULT([using .so])]
+)
+
+
+AC_CONFIG_FILES([Makefile
+ ws.service.interop/Makefile
+ ws.service.interop/resources/Makefile
+ ws.service.interop/ws.service.interop/Makefile
+ ws.service.interop/ws.service.interop.client/Makefile
+ ])
+AC_OUTPUT
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/deploy.cmd
new file mode 100644
index 0000000000..d6d0c72cb9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/deploy.cmd
@@ -0,0 +1,57 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA sample.
+setlocal
+set currentPath=%~d0%~p0
+set sourcePath=%currentPath%
+
+
+set destinationPath=%sourcePath%\deploy
+
+if not exist %destinationPath%\packages mkdir %destinationPath%\packages
+if not exist %destinationPath%\packages\ws.binding.service mkdir %destinationPath%\packages\ws.binding.service
+
+copy %sourcePath%\ws.binding.service\TestImpl.componentType %destinationPath%\packages\ws.binding.service
+copy %sourcePath%\ws.binding.service\ws.binding.service.composite %destinationPath%\packages\ws.binding.service
+copy %sourcePath%\ws.binding.service\Test.h %destinationPath%\packages\ws.binding.service
+copy %sourcePath%\ws.binding.service\TestImpl.h %destinationPath%\packages\ws.binding.service
+copy %sourcePath%\ws.binding.service\Test.wsdl %destinationPath%\packages\ws.binding.service
+copy %sourcePath%\ws.binding.service\Debug\ws.binding.service.dll %destinationPath%\packages\ws.binding.service
+
+if not exist %destinationPath%\bin mkdir %destinationPath%\bin
+copy %sourcePath%\ws.binding.service.client\Debug\ws.binding.service.client.exe %destinationPath%\bin
+copy %sourcePath%\ws.binding.service.client\Debug\ws.binding.service.client.pdb %destinationPath%\bin
+copy %sourcePath%\ws.binding.service.client\runclient.bat %destinationPath%\bin
+
+
+if not exist %destinationPath%\configuration mkdir %destinationPath%\configuration
+if not exist %destinationPath%\configuration\ws.binding.service.solution mkdir %destinationPath%\configuration\ws.binding.service.solution
+
+copy %sourcePath%\ws.binding.service\ws.binding.service.solution.composite %destinationPath%\configuration\ws.binding.service.solution
+
+
+if not exist %AXIS2C_HOME%\services\ws.binding.service mkdir %AXIS2C_HOME%\services\ws.binding.service
+
+copy %sourcePath%\ws.binding.service\services.xml %AXIS2C_HOME%\services\ws.binding.service
+copy %TUSCANY_SCACPP%\extensions\ws\service\bin\tuscany_sca_ws_service.dll %AXIS2C_HOME%\services\ws.binding.service
+
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/TestClient.c b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/TestClient.c
new file mode 100644
index 0000000000..bb728dc916
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/TestClient.c
@@ -0,0 +1,414 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <axiom.h>
+#include <axis2_util.h>
+#include <axiom_soap.h>
+#include <axis2_client.h>
+
+axiom_node_t *
+build_om_payload_for_doDataObject(axis2_env_t *env);
+
+axiom_node_t *
+build_om_payload_for_doDataObject_Failure(axis2_env_t *env);
+
+axiom_node_t *
+build_om_payload_for_doAny(axis2_env_t *env);
+
+axiom_node_t *
+build_om_payload_for_doMixed(axis2_env_t *env);
+
+axiom_node_t *
+build_om_payload_for_doSingleData(axis2_env_t *env, char* name, char* data);
+
+void runCall(axis2_env_t* env, char* endpoint, char* opName, axiom_node_t* payload, int expectFailure);
+
+int main(int argc, char** argv)
+{
+ axis2_env_t *env = NULL;
+ axis2_char_t *address = NULL;
+ axis2_endpoint_ref_t* endpoint_ref = NULL;
+ axis2_options_t *options = NULL;
+ axis2_char_t *client_home = NULL;
+ axis2_svc_client_t* svc_client = NULL;
+ axiom_node_t *payload = NULL;
+ axiom_node_t *ret_node = NULL;
+
+ /* Set up the envioronment */
+ env = axis2_env_create_all("ws.binding.service.test.log", AXIS2_LOG_LEVEL_TRACE);
+
+ /* Set end point reference of echo service */
+ address = "http://localhost:9090/axis2/services/ws.binding.service";
+ if (argc > 1 )
+ address = argv[1];
+ if (AXIS2_STRCMP(address, "-h") == 0)
+ {
+ printf("Usage : %s [endpoint_url]\n", argv[0]);
+ printf("use -h for help\n");
+ return 0;
+ }
+ printf ("Using endpoint : %s\n", address);
+
+
+ /* do all the single data types */
+ payload = build_om_payload_for_doSingleData(env, "doChars", "Here is some char* data");
+ runCall(env, address, "doChars", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doLong", "123456789");
+ runCall(env, address, "doLong", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doInt", "123456789");
+ runCall(env, address, "doInt", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doFloat", "123.45");
+ runCall(env, address, "doFloat", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doLongDouble", "12345.67891");
+ runCall(env, address, "doLongDouble", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doDouble", "1234.4567");
+ runCall(env, address, "doDouble", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doBool", "true");
+ runCall(env, address, "doBool", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doShort", "12345");
+ runCall(env, address, "doShort", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doBytes", "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef");
+ runCall(env, address, "doBytes", payload, 0);
+ payload = build_om_payload_for_doSingleData(env, "doByte", "66");
+ runCall(env, address, "doByte", payload, 0);
+ payload = build_om_payload_for_doDataObject(env);
+ runCall(env, address, "doDataObject", payload, 0);
+ payload = build_om_payload_for_doMixed(env);
+ runCall(env, address, "doMixed", payload, 0);
+ payload = build_om_payload_for_doAny(env);
+ runCall(env, address, "doAny", payload, 0);
+
+ payload = build_om_payload_for_doDataObject_Failure(env);
+ runCall(env, address, "doDataObject", payload, 1);
+
+ return 0;
+}
+
+void runCall(axis2_env_t *env, char* endpoint, char* opName, axiom_node_t* payload, int expectFailure)
+{
+ axis2_char_t *address = endpoint;
+ axis2_endpoint_ref_t* endpoint_ref = NULL;
+ axis2_options_t *options = NULL;
+ axis2_char_t *client_home = NULL;
+ axis2_svc_client_t* svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ char action [100];
+ int len = 0;
+
+ printf("runSingleDataCall with endpoint %s, opName %s\n", endpoint, opName);
+
+ client_home = AXIS2_GETENV("AXIS2C_HOME");
+
+ /* Create EPR with given address */
+ endpoint_ref = axis2_endpoint_ref_create(env, address);
+
+ svc_client = axis2_svc_client_create(env, client_home);
+ if (!svc_client)
+ {
+ printf("Error creating service client\n");
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ }
+
+ options = axis2_options_create(env);
+
+ AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref);
+
+ len = sprintf(action, "http://www.WSEntryPointTest.org/WSEntryPointTest/%s", opName);
+ AXIS2_OPTIONS_SET_ACTION(options, env, action);
+
+ /* Set service client options */
+ AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options);
+
+ /* Engage addressing composite */
+ AXIS2_SVC_CLIENT_ENGAGE_MODULE(svc_client, env, AXIS2_MODULE_ADDRESSING);
+
+ /* Send request */
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, payload);
+ if(ret_node)
+ {
+ axis2_char_t *om_str = NULL;
+ om_str = AXIOM_NODE_TO_STRING(ret_node, env);
+ if (om_str)
+ printf("\nReceived OM : %s\n", om_str);
+ printf("\nWSEntryPointTest %s invoke SUCCESSFUL!\n", opName);
+ }
+ else
+ {
+ if(expectFailure)
+ {
+ printf("\nWSEntryPointTest %s failure as expected: SUCCESSFUL!\n", opName);
+ }
+ else
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ printf("WSEntryPointTest %s invoke FAILED!\n", opName);
+ }
+ }
+
+ if (svc_client)
+ {
+ AXIS2_SVC_CLIENT_FREE(svc_client, env);
+ svc_client = NULL;
+ }
+ if (endpoint_ref)
+ {
+ AXIS2_ENDPOINT_REF_FREE(endpoint_ref, env);
+ endpoint_ref = NULL;
+ }
+}
+
+/* build SOAP request message content using OM */
+axiom_node_t *
+build_om_payload_for_doDataObject(axis2_env_t *env)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_element_t* req_om_elem = NULL;
+ axiom_node_t* someData_om_node = NULL;
+ axiom_element_t* someData_om_elem = NULL;
+ axiom_node_t* someStringData_om_node = NULL;
+ axiom_element_t* someStringData_om_elem = NULL;
+ axiom_node_t* someIntData_om_node = NULL;
+ axiom_element_t* someIntData_om_elem = NULL;
+ axiom_node_t* someFloatData_om_node = NULL;
+ axiom_element_t* someFloatData_om_elem = NULL;
+ axiom_node_t* someDateData_om_node = NULL;
+ axiom_element_t* someDateData_om_elem = NULL;
+ axiom_node_t* someListData_om_node = NULL;
+ axiom_element_t* someListData_om_elem = NULL;
+ axiom_node_t* listItem1_om_node = NULL;
+ axiom_element_t* listItem1_om_elem = NULL;
+ axiom_node_t* listItem2_om_node = NULL;
+ axiom_element_t* listItem2_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.WSEntryPointTest.org/WSEntryPointTest/", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, "doDataObject", ns1, &req_om_node);
+ someData_om_elem = axiom_element_create(env, req_om_node, "someData", ns1, &someData_om_node);
+ someStringData_om_elem = axiom_element_create(env, someData_om_node, "someStringData", ns1, &someStringData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someStringData_om_elem, env, "Here is some string data", someStringData_om_node);
+ someIntData_om_elem = axiom_element_create(env, someData_om_node, "someIntData", ns1, &someIntData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someIntData_om_elem, env, "12345678", someIntData_om_node);
+ someFloatData_om_elem = axiom_element_create(env, someData_om_node, "someFloatData", ns1, &someFloatData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someFloatData_om_elem, env, "1234.5678", someFloatData_om_node);
+ someDateData_om_elem = axiom_element_create(env, someData_om_node, "someDateData", ns1, &someDateData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someDateData_om_elem, env, "1977-06-27", someDateData_om_node);
+ someListData_om_elem = axiom_element_create(env, someData_om_node, "someListData", ns1, &someListData_om_node);
+ listItem1_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem1_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem1_om_elem, env, "Here is list item 1", listItem1_om_node);
+ listItem2_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem2_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem2_om_elem, env, "Here is list item 2", listItem2_om_node);
+
+ om_str = AXIOM_NODE_TO_STRING(req_om_node, env);
+ if (om_str)
+ printf("\nSending OM : %s\n", om_str);
+
+ return req_om_node;
+}
+
+/* build SOAP request message content using OM */
+axiom_node_t *
+build_om_payload_for_doDataObject_Failure(axis2_env_t *env)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_element_t* req_om_elem = NULL;
+ axiom_node_t* someData_om_node = NULL;
+ axiom_element_t* someData_om_elem = NULL;
+ axiom_node_t* someStringData_om_node = NULL;
+ axiom_element_t* someStringData_om_elem = NULL;
+ axiom_node_t* someIntData_om_node = NULL;
+ axiom_element_t* someIntData_om_elem = NULL;
+ axiom_node_t* someFloatData_om_node = NULL;
+ axiom_element_t* someFloatData_om_elem = NULL;
+ axiom_node_t* someDateData_om_node = NULL;
+ axiom_element_t* someDateData_om_elem = NULL;
+ axiom_node_t* someListData_om_node = NULL;
+ axiom_element_t* someListData_om_elem = NULL;
+ axiom_node_t* listItem1_om_node = NULL;
+ axiom_element_t* listItem1_om_elem = NULL;
+ axiom_node_t* listItem2_om_node = NULL;
+ axiom_element_t* listItem2_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ // Create bad Axiom doc
+ ns1 = axiom_namespace_create (env, "http://www.WSEntryPointTest.org/WSEntryPointTest/", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, "doDataObject", ns1, &req_om_node);
+ someData_om_elem = axiom_element_create(env, req_om_node, "someUnknownData", ns1, &someData_om_node);
+ someStringData_om_elem = axiom_element_create(env, someData_om_node, "someStringData", ns1, &someStringData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someStringData_om_elem, env, "Here is some string data", someStringData_om_node);
+ someIntData_om_elem = axiom_element_create(env, someData_om_node, "someIntData", ns1, &someIntData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someIntData_om_elem, env, "12345678", someIntData_om_node);
+ someFloatData_om_elem = axiom_element_create(env, someData_om_node, "someFloatData", ns1, &someFloatData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someFloatData_om_elem, env, "1234.5678", someFloatData_om_node);
+ someDateData_om_elem = axiom_element_create(env, someData_om_node, "someDateData", ns1, &someDateData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someDateData_om_elem, env, "1977-06-27", someDateData_om_node);
+ someListData_om_elem = axiom_element_create(env, someData_om_node, "someListData", ns1, &someListData_om_node);
+ listItem1_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem1_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem1_om_elem, env, "Here is list item 1", listItem1_om_node);
+ listItem2_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem2_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem2_om_elem, env, "Here is list item 2", listItem2_om_node);
+
+ om_str = AXIOM_NODE_TO_STRING(req_om_node, env);
+ if (om_str)
+ printf("\nSending OM : %s\n", om_str);
+
+ return req_om_node;
+}
+
+
+
+/* build SOAP request message content using OM */
+axiom_node_t *
+build_om_payload_for_doMixed(axis2_env_t *env)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_element_t* req_om_elem = NULL;
+ axiom_node_t* arg1_om_node = NULL;
+ axiom_element_t* arg1_om_elem = NULL;
+ axiom_node_t* arg2_om_node = NULL;
+ axiom_element_t* arg2_om_elem = NULL;
+ axiom_node_t* arg3_om_node = NULL;
+ axiom_element_t* arg3_om_elem = NULL;
+ axiom_node_t* arg4_om_node = NULL;
+ axiom_element_t* arg4_om_elem = NULL;
+ axiom_node_t* arg5_om_node = NULL;
+ axiom_element_t* arg5_om_elem = NULL;
+ axiom_node_t* someStringData_om_node = NULL;
+ axiom_element_t* someStringData_om_elem = NULL;
+ axiom_node_t* someIntData_om_node = NULL;
+ axiom_element_t* someIntData_om_elem = NULL;
+ axiom_node_t* someFloatData_om_node = NULL;
+ axiom_element_t* someFloatData_om_elem = NULL;
+ axiom_node_t* someDateData_om_node = NULL;
+ axiom_element_t* someDateData_om_elem = NULL;
+ axiom_node_t* someListData_om_node = NULL;
+ axiom_element_t* someListData_om_elem = NULL;
+ axiom_node_t* listItem1_om_node = NULL;
+ axiom_element_t* listItem1_om_elem = NULL;
+ axiom_node_t* listItem2_om_node = NULL;
+ axiom_element_t* listItem2_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.WSEntryPointTest.org/WSEntryPointTest/", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, "doMixed", ns1, &req_om_node);
+ arg1_om_elem = axiom_element_create(env, req_om_node, "arg1", ns1, &arg1_om_node);
+ AXIOM_ELEMENT_SET_TEXT(arg1_om_elem, env, "Here is some char* data", arg1_om_node);
+ arg2_om_elem = axiom_element_create(env, req_om_node, "arg2", ns1, &arg2_om_node);
+ AXIOM_ELEMENT_SET_TEXT(arg2_om_elem, env, "123456789", arg2_om_node);
+ arg3_om_elem = axiom_element_create(env, req_om_node, "arg3", ns1, &arg3_om_node);
+ arg4_om_elem = axiom_element_create(env, req_om_node, "arg4", ns1, &arg4_om_node);
+ AXIOM_ELEMENT_SET_TEXT(arg4_om_elem, env, "true", arg4_om_node);
+ arg5_om_elem = axiom_element_create(env, req_om_node, "arg5", ns1, &arg5_om_node);
+ AXIOM_ELEMENT_SET_TEXT(arg5_om_elem, env, "1234.5678", arg5_om_node);
+ someStringData_om_elem = axiom_element_create(env, arg3_om_node, "someStringData", ns1, &someStringData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someStringData_om_elem, env, "Here is some string data", someStringData_om_node);
+ someIntData_om_elem = axiom_element_create(env, arg3_om_node, "", ns1, &someIntData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someIntData_om_elem, env, "12345678", someIntData_om_node);
+ someFloatData_om_elem = axiom_element_create(env, arg3_om_node, "someFloatData", ns1, &someFloatData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someFloatData_om_elem, env, "1234.5678", someFloatData_om_node);
+ someDateData_om_elem = axiom_element_create(env, arg3_om_node, "someDateData", ns1, &someDateData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someDateData_om_elem, env, "1977-06-27", someDateData_om_node);
+ someListData_om_elem = axiom_element_create(env, arg3_om_node, "someListData", ns1, &someListData_om_node);
+ listItem1_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem1_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem1_om_elem, env, "Here is list item 1", listItem1_om_node);
+ listItem2_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem2_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem2_om_elem, env, "Here is list item 2", listItem2_om_node);
+
+ om_str = AXIOM_NODE_TO_STRING(req_om_node, env);
+ if (om_str)
+ printf("\nSending OM : %s\n", om_str);
+
+ return req_om_node;
+}
+
+
+axiom_node_t *
+build_om_payload_for_doSingleData(axis2_env_t *env, char* name, char* data)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_element_t* req_om_elem = NULL;
+ axiom_node_t* someData_om_node = NULL;
+ axiom_element_t* someData_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.WSEntryPointTest.org/WSEntryPointTest/", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, name, ns1, &req_om_node);
+ someData_om_elem = axiom_element_create(env, req_om_node, "someData", ns1, &someData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someData_om_elem, env, data, someData_om_node);
+
+ om_str = AXIOM_NODE_TO_STRING(req_om_node, env);
+ if (om_str)
+ printf("\nSending OM : %s\n", om_str);
+
+ return req_om_node;
+}
+
+
+axiom_node_t *
+build_om_payload_for_doAny(axis2_env_t *env)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_element_t* req_om_elem = NULL;
+ axiom_node_t* someData_om_node = NULL;
+ axiom_element_t* someData_om_elem = NULL;
+ axiom_node_t* someStringData_om_node = NULL;
+ axiom_element_t* someStringData_om_elem = NULL;
+ axiom_node_t* someIntData_om_node = NULL;
+ axiom_element_t* someIntData_om_elem = NULL;
+ axiom_node_t* someFloatData_om_node = NULL;
+ axiom_element_t* someFloatData_om_elem = NULL;
+ axiom_node_t* someDateData_om_node = NULL;
+ axiom_element_t* someDateData_om_elem = NULL;
+ axiom_node_t* someListData_om_node = NULL;
+ axiom_element_t* someListData_om_elem = NULL;
+ axiom_node_t* listItem1_om_node = NULL;
+ axiom_element_t* listItem1_om_elem = NULL;
+ axiom_node_t* listItem2_om_node = NULL;
+ axiom_element_t* listItem2_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.WSEntryPointTest.org/WSEntryPointTest/", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, "doAny", ns1, &req_om_node);
+ someData_om_elem = axiom_element_create(env, req_om_node, "anElem", ns1, &someData_om_node);
+ someStringData_om_elem = axiom_element_create(env, someData_om_node, "hello", ns1, &someStringData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someStringData_om_elem, env, "world", someStringData_om_node);
+ someIntData_om_elem = axiom_element_create(env, someData_om_node, "someIntData", ns1, &someIntData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someIntData_om_elem, env, "12345678", someIntData_om_node);
+ someFloatData_om_elem = axiom_element_create(env, someData_om_node, "someFloatData", ns1, &someFloatData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someFloatData_om_elem, env, "1234.5678", someFloatData_om_node);
+ someDateData_om_elem = axiom_element_create(env, someData_om_node, "someDateData", ns1, &someDateData_om_node);
+ AXIOM_ELEMENT_SET_TEXT(someDateData_om_elem, env, "1977-06-27", someDateData_om_node);
+ someListData_om_elem = axiom_element_create(env, someData_om_node, "someListData", ns1, &someListData_om_node);
+ listItem1_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem1_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem1_om_elem, env, "Here is list item 1", listItem1_om_node);
+ listItem2_om_elem = axiom_element_create(env, someListData_om_node, "listItem", ns1, &listItem2_om_node);
+ AXIOM_ELEMENT_SET_TEXT(listItem2_om_elem, env, "Here is list item 2", listItem2_om_node);
+
+ om_str = AXIOM_NODE_TO_STRING(req_om_node, env);
+ if (om_str)
+ printf("\nSending OM : %s\n", om_str);
+
+ return req_om_node;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/runclient.bat
new file mode 100644
index 0000000000..13f3164751
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/runclient.bat
@@ -0,0 +1,33 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+
+setlocal
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%
+
+rem Run the client
+.\ws.binding.service.client.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/ws.binding.service.client.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/ws.binding.service.client.vcproj
new file mode 100644
index 0000000000..03c007662b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.client/ws.binding.service.client.vcproj
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="ws.binding.service.client"
+ ProjectGUID="{136C4966-3073-4EB0-9259-BC5E3B987D19}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axiom.lib axis2_parser.lib axis2_util.lib axis2_engine.lib"
+ OutputFile="$(OutDir)/ws.binding.service.client.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(AXIS2C_HOME)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/ws.binding.service.client.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/service.ws.binding.client.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\TestClient.c">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ <File
+ RelativePath=".\runclient.bat">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.sln b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.sln
new file mode 100644
index 0000000000..b1de123e0a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service.sln
@@ -0,0 +1,37 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ws.binding.service", "ws.binding.service\ws.binding.service.vcproj", "{25B65303-B2E2-47AF-968C-89D9E58611F8}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ws.binding.service.client", "ws.binding.service.client\ws.binding.service.client.vcproj", "{136C4966-3073-4EB0-9259-BC5E3B987D19}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DevClient", "DevClient\DevClient.vcproj", "{2598A8C7-079E-4B56-A95D-134EAF52C59A}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Debug.ActiveCfg = Debug|Win32
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Debug.Build.0 = Debug|Win32
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Release.ActiveCfg = Release|Win32
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Release.Build.0 = Release|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Debug.ActiveCfg = Debug|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Debug.Build.0 = Debug|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Release.ActiveCfg = Release|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Release.Build.0 = Release|Win32
+ {2598A8C7-079E-4B56-A95D-134EAF52C59A}.Debug.ActiveCfg = Debug|Win32
+ {2598A8C7-079E-4B56-A95D-134EAF52C59A}.Debug.Build.0 = Debug|Win32
+ {2598A8C7-079E-4B56-A95D-134EAF52C59A}.Release.ActiveCfg = Release|Win32
+ {2598A8C7-079E-4B56-A95D-134EAF52C59A}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.h
new file mode 100644
index 0000000000..aaff35a6cc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.h
@@ -0,0 +1,50 @@
+/*
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef TEST_H
+#define TEST_H
+
+#include <commonj/sdo/SDO.h>
+#include <stdio.h>
+
+class Test
+{
+public:
+ virtual char* doChars(char* arg1) = 0;
+ virtual long doLong(long arg1) = 0;
+ virtual int doInt(int arg1) = 0;
+ virtual float doFloat(float arg1) = 0;
+ virtual long double doLongDouble(long double arg1) = 0;
+ virtual double doDouble(double arg1) = 0;
+ virtual bool doBool(bool arg1) = 0;
+ virtual short doShort(short arg1) = 0;
+ virtual char* doBytes(char* arg1) = 0;
+ virtual char doByte(char arg1) = 0;
+ virtual DataObjectPtr doMixed(char* arg1, long arg2, DataObjectPtr arg3, bool arg4, double arg5) = 0;
+ virtual DataObjectPtr doDataObject(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr doAny(DataObjectPtr arg1) = 0;
+// These don't work because they are passing pointers around
+// virtual int[] doIntArray(int[] arg1, int arg2);
+// virtual string doString(string arg1);
+// This doesn't work because there is no mapping from XSD types to SDO CharacterType
+// virtual wchar_t doWChar(wchar_t arg1);
+// This doesn't work because Operation does not support int64_t yet
+// virtual int64_t doInt64(int64_t arg1);
+};
+
+#endif
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.wsdl
new file mode 100644
index 0000000000..23ab8b08e4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/Test.wsdl
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://test/ws.binding.service/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ name="ws.binding.service"
+ targetNamespace="http://test/ws.binding.service/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://test/ws.binding.service/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="doChars">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:string" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doCharsResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:string" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doString">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:string" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doLong">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:int" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doLongResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:int" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doInt">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:int" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doIntResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:int" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doFloat">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:float" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doFloatResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:float" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doLongDouble">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:double" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doLongDoubleResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:double" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doDouble">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:double" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doDoubleResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:double" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doBool">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:boolean" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doBoolResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:boolean" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doShort">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:short" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doShortResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:short" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doBytes">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:hexBinary" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doBytesResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:hexBinary" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doByte">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:byte" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doByteResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:byte" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+
+
+ <xsd:element name="doMixed">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="arg1" type="xsd:string" minOccurs="1"/>
+ <xsd:element name="arg2" type="xsd:int" minOccurs="1"/>
+ <xsd:element name="arg3" type="dataObjectData" minOccurs="1"/>
+ <xsd:element name="arg4" type="xsd:boolean" minOccurs="1"/>
+ <xsd:element name="arg5" type="xsd:float" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doMixedResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="dataObjectData" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doDataObject">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="dataObjectData" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doDataObjectResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="dataObjectData" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="dataObjectData">
+ <xsd:sequence>
+ <xsd:element name="someStringData" type="xsd:string" minOccurs="1"/>
+ <xsd:element name="someIntData" type="xsd:int" minOccurs="1"/>
+ <xsd:element name="someFloatData" type="xsd:float" minOccurs="1"/>
+ <xsd:element name="someDateData" type="xsd:date" minOccurs="1"/>
+ <xsd:element name="someListData" type="tns:listData" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="listData">
+ <xsd:sequence>
+ <xsd:element name="listItem" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="doAny">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="doAnyResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <!-- Can't do wchar - no mapping from XSD type to SDO:Character type
+
+ <xsd:element name="doWChar">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" minOccurs="1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doWChar">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" minOccurs="1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ -->
+
+ <!-- Int64 not yet supported - see Jira TUSCANY-439
+ <xsd:element name="doInt64">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:long" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="doInt64Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="someData" type="xsd:long" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ -->
+
+ <!-- Can't do doIntArray -->
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="doDataObjectRequestMsg">
+ <wsdl:part element="tns:doDataObject" name="doDataObjectRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doDataObjectResponseMsg">
+ <wsdl:part element="tns:doDataObjectResponse" name="doDataObjectResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doCharsRequestMsg">
+ <wsdl:part element="tns:doChars" name="doCharsRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doCharsResponseMsg">
+ <wsdl:part element="tns:doCharsResponse" name="doCharsResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doStringRequestMsg">
+ <wsdl:part element="tns:doString" name="doStringRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doStringResponseMsg">
+ <wsdl:part element="tns:doCharsResponse" name="doStringResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doLongRequestMsg">
+ <wsdl:part element="tns:doLong" name="doLongRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doLongResponseMsg">
+ <wsdl:part element="tns:doLongResponse" name="doLongResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doIntRequestMsg">
+ <wsdl:part element="tns:doInt" name="doIntRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doIntResponseMsg">
+ <wsdl:part element="tns:doIntResponse" name="doIntResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doFloatRequestMsg">
+ <wsdl:part element="tns:doFloat" name="doFloatRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doFloatResponseMsg">
+ <wsdl:part element="tns:doFloatResponse" name="doFloatResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doLongDoubleRequestMsg">
+ <wsdl:part element="tns:doLongDouble" name="doLongDoubleRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doLongDoubleResponseMsg">
+ <wsdl:part element="tns:doLongDoubleResponse" name="doLongDoubleResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doDoubleRequestMsg">
+ <wsdl:part element="tns:doDouble" name="doDoubleRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doDoubleResponseMsg">
+ <wsdl:part element="tns:doDoubleResponse" name="doDoubleResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doBoolRequestMsg">
+ <wsdl:part element="tns:doBool" name="doBoolRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doBoolResponseMsg">
+ <wsdl:part element="tns:doBoolResponse" name="doBoolResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doShortRequestMsg">
+ <wsdl:part element="tns:doShort" name="doShortRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doShortResponseMsg">
+ <wsdl:part element="tns:doShortResponse" name="doShortResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doBytesRequestMsg">
+ <wsdl:part element="tns:doBytes" name="doBytesRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doBytesResponseMsg">
+ <wsdl:part element="tns:doBytesResponse" name="doBytesResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doByteRequestMsg">
+ <wsdl:part element="tns:doByte" name="doByteRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doByteResponseMsg">
+ <wsdl:part element="tns:doByteResponse" name="doByteResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doMixedRequestMsg">
+ <wsdl:part element="tns:doMixed" name="doMixedRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doMixedResponseMsg">
+ <wsdl:part element="tns:doMixedResponse" name="doMixedResponsePart"/>
+ </wsdl:message>
+
+ <wsdl:message name="doAnyRequestMsg">
+ <wsdl:part element="tns:doAny" name="doAnyRequestPart"/>
+ </wsdl:message>
+ <wsdl:message name="doAnyResponseMsg">
+ <wsdl:part element="tns:doAnyResponse" name="doAnyResponsePart"/>
+ </wsdl:message>
+
+
+ <wsdl:portType name="ws.binding.service">
+ <wsdl:operation name="doDataObject">
+ <wsdl:input message="tns:doDataObjectRequestMsg"/>
+ <wsdl:output message="tns:doDataObjectResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doChars">
+ <wsdl:input message="tns:doCharsRequestMsg"/>
+ <wsdl:output message="tns:doCharsResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doString">
+ <wsdl:input message="tns:doStringRequestMsg"/>
+ <wsdl:output message="tns:doStringResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doLong">
+ <wsdl:input message="tns:doLongRequestMsg"/>
+ <wsdl:output message="tns:doLongResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doInt">
+ <wsdl:input message="tns:doIntRequestMsg"/>
+ <wsdl:output message="tns:doIntResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doFloat">
+ <wsdl:input message="tns:doFloatRequestMsg"/>
+ <wsdl:output message="tns:doFloatResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doLongDouble">
+ <wsdl:input message="tns:doLongDoubleRequestMsg"/>
+ <wsdl:output message="tns:doLongDoubleResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doDouble">
+ <wsdl:input message="tns:doDoubleRequestMsg"/>
+ <wsdl:output message="tns:doDoubleResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doBool">
+ <wsdl:input message="tns:doBoolRequestMsg"/>
+ <wsdl:output message="tns:doBoolResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doShort">
+ <wsdl:input message="tns:doShortRequestMsg"/>
+ <wsdl:output message="tns:doShortResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doBytes">
+ <wsdl:input message="tns:doBytesRequestMsg"/>
+ <wsdl:output message="tns:doBytesResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doByte">
+ <wsdl:input message="tns:doByteRequestMsg"/>
+ <wsdl:output message="tns:doByteResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doMixed">
+ <wsdl:input message="tns:doMixedRequestMsg"/>
+ <wsdl:output message="tns:doMixedResponseMsg"/>
+ </wsdl:operation>
+ <wsdl:operation name="doAny">
+ <wsdl:input message="tns:doAnyRequestMsg"/>
+ <wsdl:output message="tns:doAnyResponseMsg"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+
+ <wsdl:binding name="ws.binding.serviceSOAP" type="tns:ws.binding.service">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="doDataObject">
+ <soap:operation soapAction="ws.binding.service/doDataObject"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doChars">
+ <soap:operation soapAction="ws.binding.service/doChars"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doString">
+ <soap:operation soapAction="ws.binding.service/doString"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doLong">
+ <soap:operation soapAction="ws.binding.service/doLong"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doInt">
+ <soap:operation soapAction="ws.binding.service/doInt"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doFloat">
+ <soap:operation soapAction="ws.binding.service/doFloat"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doLongDouble">
+ <soap:operation soapAction="ws.binding.service/doLongDouble"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doDouble">
+ <soap:operation soapAction="ws.binding.service/doDouble"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doBool">
+ <soap:operation soapAction="ws.binding.service/doBool"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doShort">
+ <soap:operation soapAction="ws.binding.service/doShort"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doBytes">
+ <soap:operation soapAction="ws.binding.service/doBytes"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doByte">
+ <soap:operation soapAction="ws.binding.service/doByte"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doMixed">
+ <soap:operation soapAction="ws.binding.service/doMixed"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="doAny">
+ <soap:operation soapAction="ws.binding.service/doAny"/>
+ <wsdl:input><soap:body use="literal"/></wsdl:input>
+ <wsdl:output><soap:body use="literal"/></wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="ws.binding.service">
+ <wsdl:port binding="tns:ws.binding.serviceSOAP" name="ws.binding.serviceSOAP">
+ <soap:address location="http://localhost:9090/axis2/services/ws.binding.service"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.componentType
new file mode 100644
index 0000000000..d0cca1882d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.componentType
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="TestService">
+ <interface.cpp header="Test.h"/>
+ </service>
+
+</componentType>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.cpp
new file mode 100644
index 0000000000..e24534701d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.cpp
@@ -0,0 +1,158 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#include "TestImpl.h"
+#include <stdio.h>
+#include <tuscany/sca/util/Utils.h>
+using namespace tuscany::sca;
+#include <commonj/sdo/SDO.h>
+#include <sdo_axiom.h>
+using namespace commonj::sdo;
+using namespace commonj::sdo_axiom;
+
+TestImpl::TestImpl()
+{
+}
+
+TestImpl::~TestImpl()
+{
+}
+
+char* TestImpl::doChars(char* arg1)
+{
+ printf("TestImpl::doChars %s\n", arg1);
+ return arg1;
+}
+
+
+long TestImpl::doLong(long arg1)
+{
+ printf("TestImpl::doLong %d\n", arg1);
+ return arg1;
+}
+
+int TestImpl::doInt(int arg1)
+{
+ printf("TestImpl::doInt %d\n", arg1);
+ return arg1;
+}
+
+float TestImpl::doFloat(float arg1)
+{
+ printf("TestImpl::doFloat %f\n", arg1);
+ return arg1;
+}
+
+long double TestImpl::doLongDouble(long double arg1)
+{
+ printf("TestImpl::doLongDouble %f\n", arg1);
+ return arg1;
+}
+
+double TestImpl::doDouble(double arg1)
+{
+ printf("TestImpl::doDouble %f\n", arg1);
+ return arg1;
+}
+
+
+bool TestImpl::doBool(bool arg1)
+{
+ printf("TestImpl::doBool %d\n", arg1);
+ return arg1;
+}
+
+short TestImpl::doShort(short arg1)
+{
+ printf("TestImpl::doShort %d\n", arg1);
+ return arg1;
+}
+
+char* TestImpl::doBytes(char* arg1)
+{
+ printf("TestImpl::doBytes %s\n", arg1);
+ return arg1;
+}
+
+char TestImpl::doByte(char arg1)
+{
+ printf("TestImpl::doByte %c\n", arg1);
+ return arg1;
+}
+
+DataObjectPtr TestImpl::doMixed(char* arg1, long arg2, DataObjectPtr arg3, bool arg4, double arg5)
+{
+ printf("TestImpl::doMixed %s %d %s %d %d\n", arg1, arg2, arg3->getType().getURI(), arg4, arg5);
+ Utils::printDO(arg3);
+ return arg3;
+}
+
+DataObjectPtr TestImpl::doDataObject(DataObjectPtr arg1)
+{
+ printf("TestImpl::doDataObject %s\n", arg1->getType().getURI());
+ Utils::printDO(arg1);
+ return arg1;
+}
+
+DataObjectPtr TestImpl::doAny(DataObjectPtr arg1)
+{
+ printf("TestImpl::doAny %s#%s\n", arg1->getType().getURI(), arg1->getType().getName());
+ Utils::printDO(arg1);
+ //return arg1;
+
+ DataFactoryPtr factory = arg1->getDataFactory();
+ DataObjectPtr data = factory->create(Type::SDOTypeNamespaceURI, "OpenDataObject");
+ data->setCString("stringData", "Here is some string data");
+ data->setBoolean("boolData", true);
+ DataObjectList& list = data->getList("intDataList");
+ list.append((long)123456789);
+ list.append((long)111111111);
+ list.append((long)222222222);
+ Utils::printDO(data);
+ return data;
+}
+
+//int[] TestImpl::doIntArray(int[] arg1, int arg2)
+//{
+// printf("TestImpl::doIntArray with length %d\n", arg2);
+// for(int i=0; i<arg2; i++)
+// {
+// printf("%d\n", arg1[i]);
+// }
+// return arg1;
+//}
+//
+//string TestImpl::doString(string arg1)
+//{
+// printf("TestImpl::doString %s\n", arg1.c_str());
+// return arg1;
+//}
+//
+//wchar_t TestImpl::doWChar(wchar_t arg1)
+//{
+// printf("TestImpl::doWChar %s\n", arg1);
+// return arg1;
+//}
+//
+//int64_t TestImpl::doInt64(int64_t arg1)
+//{
+// printf("TestImpl::doInt64 %d\n", arg1);
+// return arg1;
+//}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.h
new file mode 100644
index 0000000000..3026d4c7aa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/TestImpl.h
@@ -0,0 +1,54 @@
+/*
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef TESTIMPL_H
+#define TESTIMPL_H
+
+#include "Test.h"
+
+class TestImpl : public Test
+{
+public:
+ TestImpl();
+ virtual ~TestImpl();
+
+ // WSCompositeServiceTest interface
+ virtual char* doChars(char* arg1);
+ virtual long doLong(long arg1);
+ virtual int doInt(int arg1);
+ virtual float doFloat(float arg1);
+ virtual long double doLongDouble(long double arg1);
+ virtual double doDouble(double arg1);
+ virtual bool doBool(bool arg1);
+ virtual short doShort(short arg1);
+ virtual char* doBytes(char* arg1);
+ virtual char doByte(char arg1);
+ virtual DataObjectPtr doMixed(char* arg1, long arg2, DataObjectPtr arg3, bool arg4, double arg5);
+ virtual DataObjectPtr doDataObject(DataObjectPtr arg1);
+ virtual DataObjectPtr doAny(DataObjectPtr arg1);
+
+// These don't work because they are passing pointers around
+// virtual int[] doIntArray(int[] arg1, int arg2);
+// virtual string doString(string arg1);
+// This doesn't work because there is no mapping from XSD types to SDO CharacterType
+// virtual wchar_t doWChar(wchar_t arg1);
+// This doesn't work because Operation does not support int64_t yet
+// virtual int64_t doInt64(int64_t arg1);
+
+};
+
+#endif
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/services.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/services.xml
new file mode 100644
index 0000000000..b223a53dad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/services.xml
@@ -0,0 +1,62 @@
+
+<!--
+ Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<service name="ws.binding.service">
+ <parameter name="ServiceClass" locked="xsd:false">tuscany_sca_ws_service</parameter>
+ <parameter name="TuscanySystemRoot" locked="xsd:false">D:/tuscany/cpp/sca/test/ws.binding.service/deploy</parameter>
+ <parameter name="TuscanyService" locked="xsd:false">ws.binding.service.solution.component/ws.binding.service</parameter>
+
+ <description>
+ This is a testing service , to test the system is working or not
+ </description>
+
+ <operation name="doChars">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doLong">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doInt">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doFloat">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doLongDouble">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doDouble">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doBool">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doShort">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doBytes">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doMixed">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doDataObject">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+ <operation name="doAny">
+ <!--messageReceiver class="axis2_receivers" /-->
+ </operation>
+</service>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.composite
new file mode 100644
index 0000000000..98393813f3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.composite
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="ws.binding.service">
+
+ <!-- Expose as a web service -->
+ <service name="ws.binding.service">
+ <interface.wsdl interface="Test.wsdl"/>
+ <binding.ws port="http://test/ws.binding.service/#wsdl.endpoint(ws.binding.service/ws.binding.serviceSOAP)"/>
+ <reference>ws.binding.service.component/TestService</reference>
+ </service>
+
+
+ <component name="ws.binding.service.component">
+ <implementation.cpp library="ws.binding.service" header="TestImpl.h"/>
+ </component>
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.solution.composite
new file mode 100644
index 0000000000..e1e402454b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.solution.composite
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="ws.binding.service.solution">
+
+
+ <component name="ws.binding.service.solution.component">
+ <implementation.composite name="ws.binding.service" />
+ </component>
+
+</composite>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.vcproj
new file mode 100644
index 0000000000..22c601b695
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.vcproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="ws.binding.service"
+ ProjectGUID="{25B65303-B2E2-47AF-968C-89D9E58611F8}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)/include,$(TUSCANY_SCACPP)/extensions/cpp/include,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="5"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib tuscany_sca_cpp.lib"
+ OutputFile="$(OutDir)/ws.binding.service.dll"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib,$(TUSCANY_SCACPP)/extensions/cpp/lib,$(TUSCANY_SDOCPP)/lib,$(AXIS2C_HOME)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/service.ws.binding.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(TUSCANY_SCACPP)/bin/scagen.cmd -dir . -output . -verbose"
+ ExcludedFromBuild="TRUE"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/service.ws.binding.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\TestImpl.cpp">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Wrapper.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ <File
+ RelativePath=".\Test.h">
+ </File>
+ <File
+ RelativePath=".\TestImpl.h">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Proxy.h">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Wrapper.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ <File
+ RelativePath=".\services.xml">
+ </File>
+ <File
+ RelativePath=".\Test.wsdl">
+ </File>
+ <File
+ RelativePath=".\TestImpl.componentType">
+ </File>
+ <File
+ RelativePath=".\ws.binding.service.composite">
+ </File>
+ <File
+ RelativePath=".\ws.binding.service.solution.composite">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/Makefile.am
new file mode 100644
index 0000000000..bc0e430ee7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/Makefile.am
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/test/ws.service.interop/deploy/configuration
+SUBDIRS = ws.service.interop ws.service.interop.client resources
+EXTRA_DIST = ws.service.interop.solution
+deploy_DATA = ws.service.interop/ws.service.interop.solution.composite
+
+TESTS = runtest.sh
+TESTS_ENVIRONMENT = $(SHELL) -x
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/deploy.cmd
new file mode 100644
index 0000000000..3aab273673
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/deploy.cmd
@@ -0,0 +1,58 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rem Will copy the correct files from the source tree for packaging and deployment of the
+rem SCA sample.
+setlocal
+set currentPath=%~d0%~p0
+set sourcePath=%currentPath%
+
+
+set destinationPath=%sourcePath%\deploy
+
+if not exist %destinationPath% mkdir %destinationPath%
+if not exist %destinationPath%\packages mkdir %destinationPath%\packages
+if not exist %destinationPath%\packages\ws.service.interop mkdir %destinationPath%\packages\ws.service.interop
+
+copy %sourcePath%\ws.service.interop\TestImpl.componentType %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\ws.service.interop\ws.service.interop.composite %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\ws.service.interop\Test.h %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\ws.service.interop\TestImpl.h %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\resources\interop.wsdl %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\resources\*.xsd %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\resources\*.xml %destinationPath%\packages\ws.service.interop
+copy %sourcePath%\ws.service.interop\Debug\ws_service_interop.dll %destinationPath%\packages\ws.service.interop
+
+
+if not exist %destinationPath%\bin mkdir %destinationPath%\bin
+if not exist %destinationPath%\bin\resources mkdir %destinationPath%\bin\resources
+
+copy %sourcePath%\ws.service.interop.client\Debug\ws.service.interop.client.exe %destinationPath%\bin
+copy %sourcePath%\ws.service.interop.client\Debug\ws.service.interop.client.pdb %destinationPath%\bin
+copy %sourcePath%\ws.service.interop.client\runclient.bat %destinationPath%\bin
+copy %sourcePath%\ws.service.interop\runwsserver.bat %destinationPath%\bin
+copy %sourcePath%\resources\*.xsd %destinationPath%\bin\resources
+copy %sourcePath%\resources\*.xml %destinationPath%\bin\resources
+
+
+if not exist %destinationPath%\configuration mkdir %destinationPath%\configuration
+if not exist %destinationPath%\configuration\ws.service.interop.solution mkdir %destinationPath%\configuration\ws.service.interop.solution
+
+copy %sourcePath%\ws.service.interop\ws.service.interop.solution.composite %destinationPath%\configuration\ws.service.interop.solution
+
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/Makefile.am
new file mode 100644
index 0000000000..0a482e82f1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/Makefile.am
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/test/ws.service.interop/deploy
+compositedir=$(deploydir)/packages/ws.service.interop
+binresourcedir=$(deploydir)/bin/resources
+
+composite_DATA = *.xsd *.xml *.wsdl
+binresource_DATA = *.xsd *.xml *.wsdl
+EXTRA_DIST = *.xsd *.xml *.wsdl
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/datagraph.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/datagraph.xsd
new file mode 100644
index 0000000000..30727473a0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/datagraph.xsd
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/**
+ * <copyright>
+ *
+ * Service Data Objects
+ * Version 2.0
+ * Licensed Materials - Property of BEA and IBM
+ *
+ * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved.
+ *
+ * </copyright>
+ *
+ */
+-->
+
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:sdo="commonj.sdo"
+ targetNamespace="commonj.sdo">
+
+ <xsd:element name="datagraph" type="sdo:DataGraphType"/>
+
+ <xsd:complexType name="DataGraphType">
+ <xsd:complexContent>
+ <xsd:extension base="sdo:BaseDataGraphType">
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="1" namespace="##other" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BaseDataGraphType" abstract="true">
+ <xsd:sequence>
+ <xsd:element name="models" type="sdo:ModelsType" minOccurs="0"/>
+ <xsd:element name="xsd" type="sdo:XSDType" minOccurs="0"/>
+ <xsd:element name="changeSummary" type="sdo:ChangeSummaryType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="ModelsType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Expected type is emof:Package.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="XSDType">
+ <xsd:annotation>
+ <xsd:documentation>
+ Expected type is xsd:schema.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="ChangeSummaryType">
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ <xsd:attribute name="create" type="xsd:string"/>
+ <xsd:attribute name="delete" type="xsd:string"/>
+ <xsd:attribute name="logging" type="xsd:boolean"/>
+ </xsd:complexType>
+
+ <xsd:attribute name="ref" type="xsd:string"/>
+
+</xsd:schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/importschema.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/importschema.xsd
new file mode 100644
index 0000000000..082c389211
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/importschema.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:imp="http://www.apache.org/tuscany/interop/import"
+ targetNamespace="http://www.apache.org/tuscany/interop/import">
+
+ <xsd:complexType name="ImportedType">
+ <xsd:sequence>
+ <xsd:element name="AnElement" type="xsd:string"/>
+ <xsd:element name="AnotherElement" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop.wsdl b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop.wsdl
new file mode 100644
index 0000000000..258b31b2bd
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop.wsdl
@@ -0,0 +1,1814 @@
+<wsdl:definitions name="interop"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:interop="http://www.apache.org/tuscany/interop"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:include schemaLocation="interop01.xsd" />
+ <xsd:include schemaLocation="interop02.xsd" />
+ <xsd:include schemaLocation="interop03.xsd" />
+ <xsd:include schemaLocation="interop04.xsd" />
+ <!--xsd:include schemaLocation="interop05.xsd" /-->
+ <xsd:include schemaLocation="interop06.xsd" />
+ <xsd:include schemaLocation="interop07.xsd" />
+ <xsd:include schemaLocation="interop08.xsd" />
+ <xsd:include schemaLocation="interop09.xsd" />
+ <xsd:include schemaLocation="interop10.xsd" />
+ <xsd:include schemaLocation="interop11.xsd" />
+ <xsd:include schemaLocation="interop12.xsd" />
+ <xsd:include schemaLocation="interop14.xsd" />
+ <xsd:include schemaLocation="interop15.xsd" />
+ <xsd:include schemaLocation="interop16.xsd" />
+ <xsd:include schemaLocation="interop17.xsd" />
+ <xsd:include schemaLocation="interop18.xsd" />
+ <xsd:include schemaLocation="interop19.xsd" />
+ <xsd:include schemaLocation="interop20.xsd" />
+ <xsd:include schemaLocation="interop21.xsd" />
+ <xsd:include schemaLocation="interop22.xsd" />
+ <xsd:include schemaLocation="interop23.xsd" />
+ <xsd:include schemaLocation="interop24.xsd" />
+ <!--xsd:include schemaLocation="interop25.xsd" /-->
+ <xsd:include schemaLocation="interop26.xsd" />
+ <!--xsd:include schemaLocation="interop27.xsd" /-->
+ <xsd:include schemaLocation="interop28.xsd" />
+ <xsd:include schemaLocation="interop29.xsd" />
+ <xsd:include schemaLocation="interop30.xsd" />
+ <xsd:include schemaLocation="interop31.xsd" />
+ <xsd:include schemaLocation="interop32.xsd" />
+ <xsd:include schemaLocation="interop33.xsd" />
+ <xsd:include schemaLocation="interop34.xsd" />
+ <xsd:include schemaLocation="interop35.xsd" />
+ <xsd:include schemaLocation="interop36.xsd" />
+ <xsd:include schemaLocation="interop37.xsd" />
+ <xsd:include schemaLocation="interop38.xsd" />
+ <!--xsd:include schemaLocation="interop39.xsd" /-->
+ <xsd:include schemaLocation="interop40.xsd" />
+ <xsd:include schemaLocation="interop41.xsd" />
+ <xsd:include schemaLocation="interop42.xsd" />
+ <xsd:include schemaLocation="interop43.xsd" />
+ <xsd:include schemaLocation="interop44.xsd" />
+ <xsd:include schemaLocation="interop45.xsd" />
+ <xsd:include schemaLocation="interop46.xsd" />
+ <xsd:include schemaLocation="interop47.xsd" />
+ <xsd:include schemaLocation="interop50.xsd" />
+
+ <xsd:element name="interop01">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement01"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop01Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement01"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop02">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement02"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop02Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement02"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop03">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement03"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop03Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement03"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop04">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement04"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop04Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement04"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop05">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement05"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop05Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement05"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop06">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement06"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop06Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement06"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop07">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement07"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop07Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement07"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop08">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement08"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop08Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement08"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop09">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement09"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop09Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement09"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop10">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement10"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop10Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement10"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop11">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement11"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop11Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement11"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop12">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement12"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop12Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement12"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop14">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement14"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop14Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement14"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop15">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement15"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop15Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement15"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop16">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement16"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop16Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement16"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop17">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement17"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop17Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement17"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop18">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement18"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop18Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement18"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop19">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement19"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop19Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement19"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop20">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement20"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop20Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement20"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop21">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement21"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop21Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement21"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop22">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement22"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop22Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement22"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop23">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement23"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop23Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement23"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop24">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement24"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop24Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement24"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop25">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement25"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop25Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement25"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop26">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement26"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop26Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement26"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop27">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement27"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop27Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement27"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop28">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement28"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop28Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement28"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop29">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement29"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop29Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement29"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop30">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement30"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop30Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement30"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop31">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement31"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop31Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement31"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop32">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement32"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop32Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement32"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop33">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement33"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop33Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement33"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop34">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement34"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop34Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement34"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop35">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement35"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop35Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement35"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop36">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement36"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop36Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement36"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop37">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement37"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop37Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement37"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop38">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement38"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop38Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement38"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop39">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement39"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop39Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!--xsd:element ref="interop:RootElement39"/-->
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop40">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement40"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop40Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement40"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop41">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement41"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop41Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement41"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop42">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement42"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop42Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement42"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop43">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement43"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop43Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement43"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop44">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement44"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop44Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement44"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop45">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement45"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop45Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement45"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop46">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement46"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop46Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement46"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop47">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement47"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop47Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement47"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="interop50">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement50"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="interop50Response">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="interop:RootElement50"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="interop01Request">
+ <wsdl:part element="interop:interop01" name="interop01"/>
+ </wsdl:message>
+ <wsdl:message name="interop01Response">
+ <wsdl:part element="interop:interop01Response" name="interop011Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop02Request">
+ <wsdl:part element="interop:interop02" name="interop02"/>
+ </wsdl:message>
+ <wsdl:message name="interop02Response">
+ <wsdl:part element="interop:interop02Response" name="interop021Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop03Request">
+ <wsdl:part element="interop:interop03" name="interop03"/>
+ </wsdl:message>
+ <wsdl:message name="interop03Response">
+ <wsdl:part element="interop:interop03Response" name="interop031Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop04Request">
+ <wsdl:part element="interop:interop04" name="interop04"/>
+ </wsdl:message>
+ <wsdl:message name="interop04Response">
+ <wsdl:part element="interop:interop04Response" name="interop041Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop05Request">
+ <wsdl:part element="interop:interop05" name="interop05"/>
+ </wsdl:message>
+ <wsdl:message name="interop05Response">
+ <wsdl:part element="interop:interop05Response" name="interop051Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop06Request">
+ <wsdl:part element="interop:interop06" name="interop06"/>
+ </wsdl:message>
+ <wsdl:message name="interop06Response">
+ <wsdl:part element="interop:interop06Response" name="interop061Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop07Request">
+ <wsdl:part element="interop:interop07" name="interop07"/>
+ </wsdl:message>
+ <wsdl:message name="interop07Response">
+ <wsdl:part element="interop:interop07Response" name="interop071Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop08Request">
+ <wsdl:part element="interop:interop08" name="interop08"/>
+ </wsdl:message>
+ <wsdl:message name="interop08Response">
+ <wsdl:part element="interop:interop08Response" name="interop081Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop09Request">
+ <wsdl:part element="interop:interop09" name="interop09"/>
+ </wsdl:message>
+ <wsdl:message name="interop09Response">
+ <wsdl:part element="interop:interop09Response" name="interop091Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop10Request">
+ <wsdl:part element="interop:interop10" name="interop10"/>
+ </wsdl:message>
+ <wsdl:message name="interop10Response">
+ <wsdl:part element="interop:interop10Response" name="interop101Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop11Request">
+ <wsdl:part element="interop:interop11" name="interop11"/>
+ </wsdl:message>
+ <wsdl:message name="interop11Response">
+ <wsdl:part element="interop:interop11Response" name="interop111Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop12Request">
+ <wsdl:part element="interop:interop12" name="interop12"/>
+ </wsdl:message>
+ <wsdl:message name="interop12Response">
+ <wsdl:part element="interop:interop12Response" name="interop121Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop14Request">
+ <wsdl:part element="interop:interop14" name="interop14"/>
+ </wsdl:message>
+ <wsdl:message name="interop14Response">
+ <wsdl:part element="interop:interop14Response" name="interop141Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop15Request">
+ <wsdl:part element="interop:interop15" name="interop15"/>
+ </wsdl:message>
+ <wsdl:message name="interop15Response">
+ <wsdl:part element="interop:interop15Response" name="interop151Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop16Request">
+ <wsdl:part element="interop:interop16" name="interop16"/>
+ </wsdl:message>
+ <wsdl:message name="interop16Response">
+ <wsdl:part element="interop:interop16Response" name="interop161Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop17Request">
+ <wsdl:part element="interop:interop17" name="interop17"/>
+ </wsdl:message>
+ <wsdl:message name="interop17Response">
+ <wsdl:part element="interop:interop17Response" name="interop171Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop18Request">
+ <wsdl:part element="interop:interop18" name="interop18"/>
+ </wsdl:message>
+ <wsdl:message name="interop18Response">
+ <wsdl:part element="interop:interop18Response" name="interop181Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop19Request">
+ <wsdl:part element="interop:interop19" name="interop19"/>
+ </wsdl:message>
+ <wsdl:message name="interop19Response">
+ <wsdl:part element="interop:interop19Response" name="interop191Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop20Request">
+ <wsdl:part element="interop:interop20" name="interop20"/>
+ </wsdl:message>
+ <wsdl:message name="interop20Response">
+ <wsdl:part element="interop:interop20Response" name="interop201Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop21Request">
+ <wsdl:part element="interop:interop21" name="interop21"/>
+ </wsdl:message>
+ <wsdl:message name="interop21Response">
+ <wsdl:part element="interop:interop21Response" name="interop211Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop22Request">
+ <wsdl:part element="interop:interop22" name="interop22"/>
+ </wsdl:message>
+ <wsdl:message name="interop22Response">
+ <wsdl:part element="interop:interop22Response" name="interop221Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop23Request">
+ <wsdl:part element="interop:interop23" name="interop23"/>
+ </wsdl:message>
+ <wsdl:message name="interop23Response">
+ <wsdl:part element="interop:interop23Response" name="interop231Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop24Request">
+ <wsdl:part element="interop:interop24" name="interop24"/>
+ </wsdl:message>
+ <wsdl:message name="interop24Response">
+ <wsdl:part element="interop:interop24Response" name="interop241Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop25Request">
+ <wsdl:part element="interop:interop25" name="interop25"/>
+ </wsdl:message>
+ <wsdl:message name="interop25Response">
+ <wsdl:part element="interop:interop25Response" name="interop251Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop26Request">
+ <wsdl:part element="interop:interop26" name="interop26"/>
+ </wsdl:message>
+ <wsdl:message name="interop26Response">
+ <wsdl:part element="interop:interop26Response" name="interop261Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop27Request">
+ <wsdl:part element="interop:interop27" name="interop27"/>
+ </wsdl:message>
+ <wsdl:message name="interop27Response">
+ <wsdl:part element="interop:interop27Response" name="interop271Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop28Request">
+ <wsdl:part element="interop:interop28" name="interop28"/>
+ </wsdl:message>
+ <wsdl:message name="interop28Response">
+ <wsdl:part element="interop:interop28Response" name="interop281Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop29Request">
+ <wsdl:part element="interop:interop29" name="interop29"/>
+ </wsdl:message>
+ <wsdl:message name="interop29Response">
+ <wsdl:part element="interop:interop29Response" name="interop291Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop30Request">
+ <wsdl:part element="interop:interop30" name="interop30"/>
+ </wsdl:message>
+ <wsdl:message name="interop30Response">
+ <wsdl:part element="interop:interop30Response" name="interop301Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop31Request">
+ <wsdl:part element="interop:interop31" name="interop31"/>
+ </wsdl:message>
+ <wsdl:message name="interop31Response">
+ <wsdl:part element="interop:interop31Response" name="interop311Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop32Request">
+ <wsdl:part element="interop:interop32" name="interop32"/>
+ </wsdl:message>
+ <wsdl:message name="interop32Response">
+ <wsdl:part element="interop:interop32Response" name="interop321Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop33Request">
+ <wsdl:part element="interop:interop33" name="interop33"/>
+ </wsdl:message>
+ <wsdl:message name="interop33Response">
+ <wsdl:part element="interop:interop33Response" name="interop331Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop34Request">
+ <wsdl:part element="interop:interop34" name="interop34"/>
+ </wsdl:message>
+ <wsdl:message name="interop34Response">
+ <wsdl:part element="interop:interop34Response" name="interop341Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop35Request">
+ <wsdl:part element="interop:interop35" name="interop35"/>
+ </wsdl:message>
+ <wsdl:message name="interop35Response">
+ <wsdl:part element="interop:interop35Response" name="interop351Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop36Request">
+ <wsdl:part element="interop:interop36" name="interop36"/>
+ </wsdl:message>
+ <wsdl:message name="interop36Response">
+ <wsdl:part element="interop:interop36Response" name="interop361Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop37Request">
+ <wsdl:part element="interop:interop37" name="interop37"/>
+ </wsdl:message>
+ <wsdl:message name="interop37Response">
+ <wsdl:part element="interop:interop37Response" name="interop371Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop38Request">
+ <wsdl:part element="interop:interop38" name="interop38"/>
+ </wsdl:message>
+ <wsdl:message name="interop38Response">
+ <wsdl:part element="interop:interop38Response" name="interop381Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop39Request">
+ <wsdl:part element="interop:interop39" name="interop39"/>
+ </wsdl:message>
+ <wsdl:message name="interop39Response">
+ <wsdl:part element="interop:interop39Response" name="interop391Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop40Request">
+ <wsdl:part element="interop:interop40" name="interop40"/>
+ </wsdl:message>
+ <wsdl:message name="interop40Response">
+ <wsdl:part element="interop:interop40Response" name="interop401Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop41Request">
+ <wsdl:part element="interop:interop41" name="interop41"/>
+ </wsdl:message>
+ <wsdl:message name="interop41Response">
+ <wsdl:part element="interop:interop41Response" name="interop411Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop42Request">
+ <wsdl:part element="interop:interop42" name="interop42"/>
+ </wsdl:message>
+ <wsdl:message name="interop42Response">
+ <wsdl:part element="interop:interop42Response" name="interop421Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop43Request">
+ <wsdl:part element="interop:interop43" name="interop43"/>
+ </wsdl:message>
+ <wsdl:message name="interop43Response">
+ <wsdl:part element="interop:interop43Response" name="interop431Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop44Request">
+ <wsdl:part element="interop:interop44" name="interop44"/>
+ </wsdl:message>
+ <wsdl:message name="interop44Response">
+ <wsdl:part element="interop:interop44Response" name="interop441Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop45Request">
+ <wsdl:part element="interop:interop45" name="interop45"/>
+ </wsdl:message>
+ <wsdl:message name="interop45Response">
+ <wsdl:part element="interop:interop45Response" name="interop451Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop46Request">
+ <wsdl:part element="interop:interop46" name="interop46"/>
+ </wsdl:message>
+ <wsdl:message name="interop46Response">
+ <wsdl:part element="interop:interop46Response" name="interop461Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop47Request">
+ <wsdl:part element="interop:interop47" name="interop47"/>
+ </wsdl:message>
+ <wsdl:message name="interop47Response">
+ <wsdl:part element="interop:interop47Response" name="interop471Response"/>
+ </wsdl:message>
+
+ <wsdl:message name="interop50Request">
+ <wsdl:part element="interop:interop50" name="interop50"/>
+ </wsdl:message>
+ <wsdl:message name="interop50Response">
+ <wsdl:part element="interop:interop50Response" name="interop501Response"/>
+ </wsdl:message>
+
+ <wsdl:portType name="interop">
+
+ <wsdl:operation name="interop01">
+ <wsdl:input message="interop:interop01Request"/>
+ <wsdl:output message="interop:interop01Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop02">
+ <wsdl:input message="interop:interop02Request"/>
+ <wsdl:output message="interop:interop02Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop03">
+ <wsdl:input message="interop:interop03Request"/>
+ <wsdl:output message="interop:interop03Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop04">
+ <wsdl:input message="interop:interop04Request"/>
+ <wsdl:output message="interop:interop04Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop05">
+ <wsdl:input message="interop:interop05Request"/>
+ <wsdl:output message="interop:interop05Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop06">
+ <wsdl:input message="interop:interop06Request"/>
+ <wsdl:output message="interop:interop06Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop07">
+ <wsdl:input message="interop:interop07Request"/>
+ <wsdl:output message="interop:interop07Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop08">
+ <wsdl:input message="interop:interop08Request"/>
+ <wsdl:output message="interop:interop08Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop09">
+ <wsdl:input message="interop:interop09Request"/>
+ <wsdl:output message="interop:interop09Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop10">
+ <wsdl:input message="interop:interop10Request"/>
+ <wsdl:output message="interop:interop10Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop11">
+ <wsdl:input message="interop:interop11Request"/>
+ <wsdl:output message="interop:interop11Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop12">
+ <wsdl:input message="interop:interop12Request"/>
+ <wsdl:output message="interop:interop12Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop14">
+ <wsdl:input message="interop:interop14Request"/>
+ <wsdl:output message="interop:interop14Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop15">
+ <wsdl:input message="interop:interop15Request"/>
+ <wsdl:output message="interop:interop15Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop16">
+ <wsdl:input message="interop:interop16Request"/>
+ <wsdl:output message="interop:interop16Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop17">
+ <wsdl:input message="interop:interop17Request"/>
+ <wsdl:output message="interop:interop17Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop18">
+ <wsdl:input message="interop:interop18Request"/>
+ <wsdl:output message="interop:interop18Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop19">
+ <wsdl:input message="interop:interop19Request"/>
+ <wsdl:output message="interop:interop19Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop20">
+ <wsdl:input message="interop:interop20Request"/>
+ <wsdl:output message="interop:interop20Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop21">
+ <wsdl:input message="interop:interop21Request"/>
+ <wsdl:output message="interop:interop21Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop22">
+ <wsdl:input message="interop:interop22Request"/>
+ <wsdl:output message="interop:interop22Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop23">
+ <wsdl:input message="interop:interop23Request"/>
+ <wsdl:output message="interop:interop23Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop24">
+ <wsdl:input message="interop:interop24Request"/>
+ <wsdl:output message="interop:interop24Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop25">
+ <wsdl:input message="interop:interop25Request"/>
+ <wsdl:output message="interop:interop25Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop26">
+ <wsdl:input message="interop:interop26Request"/>
+ <wsdl:output message="interop:interop26Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop27">
+ <wsdl:input message="interop:interop27Request"/>
+ <wsdl:output message="interop:interop27Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop28">
+ <wsdl:input message="interop:interop28Request"/>
+ <wsdl:output message="interop:interop28Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop29">
+ <wsdl:input message="interop:interop29Request"/>
+ <wsdl:output message="interop:interop29Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop30">
+ <wsdl:input message="interop:interop30Request"/>
+ <wsdl:output message="interop:interop30Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop31">
+ <wsdl:input message="interop:interop31Request"/>
+ <wsdl:output message="interop:interop31Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop32">
+ <wsdl:input message="interop:interop32Request"/>
+ <wsdl:output message="interop:interop32Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop33">
+ <wsdl:input message="interop:interop33Request"/>
+ <wsdl:output message="interop:interop33Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop34">
+ <wsdl:input message="interop:interop34Request"/>
+ <wsdl:output message="interop:interop34Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop35">
+ <wsdl:input message="interop:interop35Request"/>
+ <wsdl:output message="interop:interop35Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop36">
+ <wsdl:input message="interop:interop36Request"/>
+ <wsdl:output message="interop:interop36Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop37">
+ <wsdl:input message="interop:interop37Request"/>
+ <wsdl:output message="interop:interop37Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop38">
+ <wsdl:input message="interop:interop38Request"/>
+ <wsdl:output message="interop:interop38Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop39">
+ <wsdl:input message="interop:interop39Request"/>
+ <wsdl:output message="interop:interop39Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop40">
+ <wsdl:input message="interop:interop40Request"/>
+ <wsdl:output message="interop:interop40Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop41">
+ <wsdl:input message="interop:interop41Request"/>
+ <wsdl:output message="interop:interop41Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop42">
+ <wsdl:input message="interop:interop42Request"/>
+ <wsdl:output message="interop:interop42Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop43">
+ <wsdl:input message="interop:interop43Request"/>
+ <wsdl:output message="interop:interop43Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop44">
+ <wsdl:input message="interop:interop44Request"/>
+ <wsdl:output message="interop:interop44Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop45">
+ <wsdl:input message="interop:interop45Request"/>
+ <wsdl:output message="interop:interop45Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop46">
+ <wsdl:input message="interop:interop46Request"/>
+ <wsdl:output message="interop:interop46Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop47">
+ <wsdl:input message="interop:interop47Request"/>
+ <wsdl:output message="interop:interop47Response"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop50">
+ <wsdl:input message="interop:interop50Request"/>
+ <wsdl:output message="interop:interop50Response"/>
+ </wsdl:operation>
+
+ </wsdl:portType>
+
+ <wsdl:binding name="interopSOAP" type="interop:interop">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <wsdl:operation name="interop01">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop01"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop02">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop02"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop03">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop03"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop04">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop04"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop05">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop05"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop06">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop06"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop07">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop07"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop08">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop08"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop09">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop09"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop10">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop10"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop11">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop11"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop12">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop12"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop14">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop14"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop15">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop15"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop16">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop16"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop17">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop17"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop18">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop18"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop19">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop19"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop20">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop20"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop21">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop21"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop22">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop22"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop23">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop23"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop24">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop24"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop25">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop25"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop26">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop26"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop27">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop27"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop28">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop28"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop29">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop29"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop30">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop30"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop31">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop31"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop32">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop32"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop33">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop33"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop34">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop34"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop35">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop35"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop36">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop36"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop37">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop37"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop38">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop38"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop39">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop39"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop40">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop40"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop41">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop41"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop42">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop42"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop43">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop43"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop44">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop44"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop45">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop45"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop46">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop46"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop47">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop47"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ <wsdl:operation name="interop50">
+ <soap:operation soapAction="http://www.apache.org/tuscany/interop/interop50"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+
+ </wsdl:binding>
+ <wsdl:service name="interop">
+ <wsdl:port binding="interop:interopSOAP" name="interopSOAP">
+ <soap:address location="http://localhost:8080/services/interop"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01-in.xml
new file mode 100644
index 0000000000..be5da658c2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01-in.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement01 xmlns:p="commonj.sdo"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop01.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</tns:RootElement01>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01.xsd
new file mode 100644
index 0000000000..083966d9f9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop01.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <include schemaLocation="interop10.xsd"/>
+
+ <!-- top level test type -->
+ <complexType name="ComplexTypeRootType">
+ <sequence>
+ <!-- simple types -->
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+
+ </sequence>
+ </complexType>
+
+ <element name="RootElement01" type="tns:ComplexTypeRootType"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02-in.xml
new file mode 100644
index 0000000000..d57593625b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02-in.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement02 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:imp="http://www.apache.org/tuscany/interop/import"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop02.xsd">
+
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ <imp:ElementOfImportedType>
+ <AnElement>SomeString</AnElement>
+ <AnotherElement>SomeString</AnotherElement>
+ </imp:ElementOfImportedType>
+</RootElement02>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02.xsd
new file mode 100644
index 0000000000..a46c21c4f9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop02.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:imp="http://www.apache.org/tuscany/interop/import"
+ xmlns:sdo="commonj.sdo"
+ xmlns:sdoJava="commonj.sdo">
+
+ <include schemaLocation="interop10.xsd"/>
+ <import schemaLocation="importschema.xsd" namespace="http://www.apache.org/tuscany/interop/import"/>
+
+ <!-- top level test type -->
+ <complexType name="ComplexTypeRootType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+ <element name="ElementOfImportedType" type="imp:ImportedType"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement02" type="tns:ComplexTypeRootType"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03-in.xml
new file mode 100644
index 0000000000..f4f50bf28c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03-in.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement03 xmlns:p="commonj.sdo"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop03.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</tns:RootElement03>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03.xsd
new file mode 100644
index 0000000000..631dc0bfff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop03.xsd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <!-- top level test type -->
+ <complexType name="ComplexTypeRootType">
+ <sequence>
+ <!-- simple types -->
+ <element name="SimpleTypeWithName" type="string"/>
+
+ </sequence>
+ </complexType>
+
+ <element name="RootElement03" type="tns:ComplexTypeRootType"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04-in.xml
new file mode 100644
index 0000000000..ae06607013
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04-in.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement04 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="interop04.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</RootElement04>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04.xsd
new file mode 100644
index 0000000000..4d968e7b3c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop04.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
+
+ <!-- top level test type -->
+ <xsd:complexType name="ComplexTypeRootType">
+ <xsd:sequence>
+ <!-- simple types -->
+ <xsd:element name="SimpleTypeWithName" type="xsd:string"/>
+
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="RootElement04" type="ComplexTypeRootType"/>
+</xsd:schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06-in.xml
new file mode 100644
index 0000000000..168c41d380
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement06 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop06.xsd">
+ RootElement6
+</RootElement06>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06.xsd
new file mode 100644
index 0000000000..acedc99232
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop06.xsd
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+
+ <element name="RootElement06" type="string"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07-in.xml
new file mode 100644
index 0000000000..029387c5d4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement07 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop07.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</tns:RootElement07>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07.xsd
new file mode 100644
index 0000000000..e1cfc492d2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop07.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <complexType name="Interop7ComplexType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement07" type="tns:Interop7ComplexType"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08-in.xml
new file mode 100644
index 0000000000..5a8c0de3b9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement08 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop08.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</tns:RootElement08>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08.xsd
new file mode 100644
index 0000000000..b7ca9dc916
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop08.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <annotation>
+ <appinfo>SDO 2.0.1</appinfo>
+ <documentation>
+ A schema that tests the presence of annotations in schema read by SDO
+ </documentation>
+ </annotation>
+
+ <complexType name="Interop8ComplexType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement08" type="tns:Interop8ComplexType"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09-in.xml
new file mode 100644
index 0000000000..37d72454c0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement09 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop09.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</tns:RootElement09>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09.xsd
new file mode 100644
index 0000000000..3a793fd8c5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop09.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <notation name="InteropTestingSchema9" public="commonj.sdo"/>
+
+ <complexType name="Interop9ComplexType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement09" type="tns:Interop9ComplexType"/>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10-in.xml
new file mode 100644
index 0000000000..164b7242b4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement10 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop10.xsd">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+</tns:RootElement10>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10.xsd
new file mode 100644
index 0000000000..593860b84b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop10.xsd
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <simpleType name="SimpleTypeWithNameType">
+ <restriction base="string"/>
+ </simpleType>
+
+ <element name="RootElement10">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11-in.xml
new file mode 100644
index 0000000000..5e5d9af4a7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+ <RootElement11 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop11.xsd">
+ <SimpleTypeAnonymous>
+ SimpleTypeAnonymous
+ </SimpleTypeAnonymous>
+</RootElement11>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11.xsd
new file mode 100644
index 0000000000..a72cda91e5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop11.xsd
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <element name="SimpleTypeAnonymous">
+ <simpleType>
+ <restriction base="string"/>
+ </simpleType>
+ </element>
+
+ <element name="RootElement11">
+ <complexType>
+ <sequence>
+ <element ref="tns:SimpleTypeAnonymous"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12-in.xml
new file mode 100644
index 0000000000..09fc39d2e1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement12 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop12.xsd">
+ <SimpleTypeWithSDOName>SimpleTypeWithSDOName</SimpleTypeWithSDOName>
+</tns:RootElement12>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12.xsd
new file mode 100644
index 0000000000..f428e65bf8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop12.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <simpleType name="SimpleTypeWithSDONameType" sdo:name="SimpleTypeWithSDONameTypeSDOName">
+ <restriction base="string"/>
+ </simpleType>
+
+ <element name="RootElement12">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithSDOName" type="tns:SimpleTypeWithSDONameType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13-in.xml
new file mode 100644
index 0000000000..256f42646d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement13 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop13.xsd">
+ <SimpleTypeWithAbstractBase>SimpleTypeWithAbstractBase</SimpleTypeWithAbstractBase>
+</RootElement13>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13.xsd
new file mode 100644
index 0000000000..3d553a7171
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop13.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <simpleType name="SimpleTypeWithAbstractType" abstract="true">
+ <restriction base="string"/>
+ </simpleType>
+
+ <simpleType name="SimpleTypeWithAbstractBase">
+ <restriction base="tns:SimpleTypeWithAbstractType"/>
+ </simpleType>
+
+ <element name="RootElement13">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithAbstractBase" type="tns:SimpleTypeWithAbstractBase"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14-in.xml
new file mode 100644
index 0000000000..eb73036a8b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement14 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop14.xsd">
+ <SimpleTypeWithInstanceClass>
+ SimpleTypeWithInstanceClass
+ </SimpleTypeWithInstanceClass>
+</tns:RootElement14>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14.xsd
new file mode 100644
index 0000000000..0155718348
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop14.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdoJava="commonj.sdo">
+
+ <simpleType name="SimpleTypeWithInstanceClassType" sdoJava:instanceClass="String">
+ <restriction base="string"/>
+ </simpleType>
+
+ <element name="RootElement14">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithInstanceClass" type="tns:SimpleTypeWithInstanceClassType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15-in.xml
new file mode 100644
index 0000000000..2376cbae06
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement15 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop15.xsd">
+ <SimpleTypeWithExtendedInstanceClass>
+ SimpleTypeWithExtendedInstanceClass
+ </SimpleTypeWithExtendedInstanceClass>
+</tns:RootElement15>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15.xsd
new file mode 100644
index 0000000000..ad59a9710b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop15.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdoJava="commonj.sdo">
+
+ <simpleType name="SimpleTypeWithExtendedInstanceClassType" sdoJava:extendedInstanceClass="String">
+ <restriction base="string"/>
+ </simpleType>
+
+ <element name="RootElement15">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithExtendedInstanceClass" type="tns:SimpleTypeWithExtendedInstanceClassType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16-in.xml
new file mode 100644
index 0000000000..94b51e764f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement16 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop16.xsd">
+ <SimpleTypeWithList>
+ listmember1 listmember2
+ </SimpleTypeWithList>
+</tns:RootElement16>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16.xsd
new file mode 100644
index 0000000000..f6518cfb3f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop16.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdoJava="commonj.sdo">
+
+ <simpleType name="SimpleTypeWithListType">
+ <list itemType="string"/>
+ </simpleType>
+
+ <element name="RootElement16">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithList" type="tns:SimpleTypeWithListType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17-in.xml
new file mode 100644
index 0000000000..4e6895d46f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17-in.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement17 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop17.xsd">
+ <SimpleTypeWithUnion>EN</SimpleTypeWithUnion>
+ <SimpleTypeWithUnion>01:02:03</SimpleTypeWithUnion>
+</tns:RootElement17>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17.xsd
new file mode 100644
index 0000000000..bbfc755fb7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop17.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdoJava="commonj.sdo">
+
+ <simpleType name="SimpleTypeWithUnionType">
+ <union>
+ <simpleType>
+ <restriction base="language">
+ </restriction>
+ </simpleType>
+ <simpleType>
+ <restriction base="time">
+ </restriction>
+ </simpleType>
+ </union>
+ </simpleType>
+
+ <element name="RootElement17">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithUnion" type="tns:SimpleTypeWithUnionType" minOccurs="2" maxOccurs="2"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18-in.xml
new file mode 100644
index 0000000000..ea28b230ea
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement18 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop18.xsd">
+ <ComplexTypeNoContent />
+</tns:RootElement18>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18.xsd
new file mode 100644
index 0000000000..de8dc5b79e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop18.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <complexType name="ComplexTypeNoContentType"/>
+
+ <element name="RootElement18">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeNoContent" type="tns:ComplexTypeNoContentType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19-in.xml
new file mode 100644
index 0000000000..77d828227c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement19 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop19.xsd">
+ <ComplexTypeContent>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeContent>
+</tns:RootElement19>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19.xsd
new file mode 100644
index 0000000000..7d28e0d9b3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop19.xsd
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <complexType name="ComplexTypeContentType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement19">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeContent" type="tns:ComplexTypeContentType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20-in.xml
new file mode 100644
index 0000000000..8b0e8df4ba
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement20 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop20.xsd">
+ <ComplexTypeAnonymousType>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeAnonymousType>
+</RootElement20>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20.xsd
new file mode 100644
index 0000000000..1c4ffa6a5c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop20.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <element name="ComplexTypeAnonymousType">
+ <complexType>
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="RootElement20">
+ <complexType>
+ <sequence>
+ <element ref="tns:ComplexTypeAnonymousType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21-in.xml
new file mode 100644
index 0000000000..3bb03bb36f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement21 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop21.xsd">
+ <ComplexTypeWithSDOName>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeWithSDOName>
+</tns:RootElement21>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21.xsd
new file mode 100644
index 0000000000..4888a7d385
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop21.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <complexType name="ComplexTypeWithSDONameType" sdo:name="ComplexTypeWithSDONameTypeSDOName">
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement21">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeWithSDOName" type="tns:ComplexTypeWithSDONameType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22-in.xml
new file mode 100644
index 0000000000..4ee0a343a4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22-in.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement22 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop22.xsd">
+ <ComplexTypeExtendsAbstractType>
+ <BaseElement>BaseElement</BaseElement>
+ <ExtensionElement>ExtensionElement</ExtensionElement>
+ </ComplexTypeExtendsAbstractType>
+</tns:RootElement22>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22.xsd
new file mode 100644
index 0000000000..11c8d5c980
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop22.xsd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <complexType name="ComplexTypeWithAbstractType" abstract="true">
+ <sequence>
+ <element name="BaseElement" type="string"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="ComplexTypeExtendsAbstractTypeType">
+ <complexContent>
+ <extension base="tns:ComplexTypeWithAbstractType">
+ <sequence>
+ <element name="ExtensionElement" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="RootElement22">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeExtendsAbstractType" type="tns:ComplexTypeExtendsAbstractTypeType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23-in.xml
new file mode 100644
index 0000000000..7f0d845be2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement23 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop23.xsd">
+ <ComplexTypeWithSDOAliasName>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeWithSDOAliasName>
+</tns:RootElement23>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23.xsd
new file mode 100644
index 0000000000..b2f358c69e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop23.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <complexType name="ComplexTypeWithSDOAliasNameType" sdo:aliasName="ComplexTypeWithSDOAliasNameTypeSDOAliasName">
+ <sequence>
+ <element name="SimpleTypeWithName" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement23">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeWithSDOAliasName" type="tns:ComplexTypeWithSDOAliasNameType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24-in.xml
new file mode 100644
index 0000000000..913004272e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24-in.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement24 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop24.xsd">
+ <ComplexTypeExtendingComplexType>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ <SimpleTypeWithNameExtended>SimpleTypeWithNameExtended</SimpleTypeWithNameExtended>
+ </ComplexTypeExtendingComplexType>
+</tns:RootElement24>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24.xsd
new file mode 100644
index 0000000000..c7c5a7f1af
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop24.xsd
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <include schemaLocation="interop19.xsd"/>
+
+ <complexType name="ComplexTypeExtendingComplexTypeType">
+ <complexContent>
+ <extension base="tns:ComplexTypeContentType">
+ <sequence>
+ <element name="SimpleTypeWithNameExtended" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="RootElement24">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeExtendingComplexType" type="tns:ComplexTypeExtendingComplexTypeType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop25-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop25-in.xml
new file mode 100644
index 0000000000..4a87e3e401
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop25-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement25 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop25.xsd">
+ <ComplexTypeExtendingSimpeType AddedByExtension="AddedByExtensionAttribute">
+ ComplexTypeExtendingSimpeType
+ </ComplexTypeExtendingSimpeType>
+</tns:RootElement25>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26-in.xml
new file mode 100644
index 0000000000..28ef8e7eaf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement26 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop26.xsd">
+ <ComplexTypeComplexContentRestrictingComplexType>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeComplexContentRestrictingComplexType>
+</tns:RootElement26>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26.xsd
new file mode 100644
index 0000000000..dc72404fae
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop26.xsd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <include schemaLocation="interop10.xsd"/>
+ <include schemaLocation="interop24.xsd"/>
+
+ <complexType name="ComplexTypeComplexContentRestrictingComplexTypeType">
+ <complexContent>
+ <restriction base="tns:ComplexTypeExtendingComplexTypeType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+ </sequence>
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <element name="RootElement26">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeComplexContentRestrictingComplexType" type="tns:ComplexTypeComplexContentRestrictingComplexTypeType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop27-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop27-in.xml
new file mode 100644
index 0000000000..c596e781ff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop27-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement27 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop27.xsd">
+ <ComplexTypeSimpleContentRestrictingComplexType AddedByExtension="AddedByExtensionAttribute">
+ ComplexTypeSimpleContentRestrictingComplexType
+ </ComplexTypeSimpleContentRestrictingComplexType>
+</tns:RootElement27>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28-in.xml
new file mode 100644
index 0000000000..ea47654916
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28-in.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement28 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop28.xsd">
+ <ComplexTypeWithMixed>
+ Some
+ Mixed
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ Content
+ </ComplexTypeWithMixed>
+</tns:RootElement28>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28.xsd
new file mode 100644
index 0000000000..36ca723a0c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop28.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <include schemaLocation="interop10.xsd"/>
+
+ <complexType name="ComplexTypeWithMixedType" mixed="true">
+ <sequence>
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement28">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeWithMixed" type="tns:ComplexTypeWithMixedType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29-in.xml
new file mode 100644
index 0000000000..37dc992ac0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement29 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop29.xsd">
+ <ComplexTypeWithSDOSequence>
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeWithSDOSequence>
+</tns:RootElement29>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29.xsd
new file mode 100644
index 0000000000..febb95142e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop29.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <include schemaLocation="interop10.xsd"/>
+
+ <complexType name="ComplexTypeWithSDOSequenceType" sdo:name="true">
+ <sequence>
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement29">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeWithSDOSequence" type="tns:ComplexTypeWithSDOSequenceType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30-in.xml
new file mode 100644
index 0000000000..1f802101c4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30-in.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement30 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop30.xsd">
+ <ComplexTypeOpenContent>
+ <ComplexTypeWithMixed>
+ Some
+ Mixed
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ Content
+ </ComplexTypeWithMixed>
+ </ComplexTypeOpenContent>
+</RootElement30>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30.xsd
new file mode 100644
index 0000000000..d42361b509
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop30.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <include schemaLocation="interop28.xsd"/>
+
+ <complexType name="ComplexTypeOpenContentType">
+ <sequence>
+ <any namespace="##any"/>
+ </sequence>
+ </complexType>
+
+ <element name="RootElement30">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeOpenContent" type="tns:ComplexTypeOpenContentType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31-in.xml
new file mode 100644
index 0000000000..3cd54829a9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement31 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop31.xsd">
+ <ComplexTypeOpenAttributes SomeOpenAttribute="Some Open Attribute">
+ <SimpleTypeWithName>SimpleTypeWithName</SimpleTypeWithName>
+ </ComplexTypeOpenAttributes>
+</tns:RootElement31>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31.xsd
new file mode 100644
index 0000000000..9ba51daca8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop31.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <include schemaLocation="interop10.xsd"/>
+
+ <attribute name="SomeOpenAttribute" type="string"/>
+
+ <complexType name="ComplexTypeOpenAttributesType">
+ <sequence>
+ <element name="SimpleTypeWithName" type="tns:SimpleTypeWithNameType"/>
+ </sequence>
+ <anyAttribute namespace="##any"/>
+ </complexType>
+
+ <element name="RootElement31">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeOpenAttributes" type="tns:ComplexTypeOpenAttributesType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32-in.xml
new file mode 100644
index 0000000000..72dc7ceb44
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32-in.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement32 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop32.xsd">
+
+ <ComplexTypeReferencedDataObject DataObjectId="idvalue0">
+ <SomeData>some data string</SomeData>
+ </ComplexTypeReferencedDataObject>
+
+ <ComplexTypeReferencingDataObject DataObjectId="idvalue1"
+ AttributeWithSDOPropertyType="idvalue0">
+ <OppositeProperty>idvalue2</OppositeProperty>
+ </ComplexTypeReferencingDataObject>
+
+ <ComplexTypeOppositeProperty DataObjectId="idvalue2"
+ AttributeWithSDOPropertyType="idvalue1" />
+</tns:RootElement32>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32.xsd
new file mode 100644
index 0000000000..bf33516371
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop32.xsd
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <complexType name="ComplexTypeReferencedDataObjectType">
+ <sequence>
+ <element name="SomeData" type="string"/>
+ </sequence>
+ <attribute name="DataObjectId" type="ID"/>
+ </complexType>
+
+ <complexType name="ComplexTypeReferencingDataObjectType">
+ <sequence>
+ <element name="OppositeProperty" type="ID"/>
+ </sequence>
+ <attribute name="AttributeWithSDOPropertyType" type="IDREF"
+ sdo:propertyType="tns:ComplexTypeReferencedDataObjectType"/>
+ <attribute name="DataObjectId" type="ID"/>
+ </complexType>
+
+ <complexType name="ComplexTypeOppositePropertyType">
+ <sequence>
+ </sequence>
+ <attribute name="AttributeWithSDOPropertyType" type="IDREF"
+ sdo:propertyType="tns:ComplexTypeReferencingDataObjectTestType"
+ sdo:oppositeProperty="OppositeProperty"/>
+ <attribute name="DataObjectId" type="ID"/>
+ </complexType>
+
+ <element name="RootElement32">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeReferencedDataObject" type="tns:ComplexTypeReferencedDataObjectType"/>
+ <element name="ComplexTypeReferencingDataObject" type="tns:ComplexTypeReferencingDataObjectType"/>
+ <element name="ComplexTypeOppositeProperty" type="tns:ComplexTypeOppositePropertyType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33-in.xml
new file mode 100644
index 0000000000..61a0fdf2aa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33-in.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement33 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop33.xsd">
+
+ <ComplexTypeAttributesTest Attribute="Attribute"
+ AttributeWithDefaultValue="AttributeWithDefaultValueDefaultValue"
+ AttributeWithFixedValue="AttributeWithFixedValueFixedValue"
+ AttributeWithSDOAliasName="AttributeWithSDOAliasName"
+ AttributeWithSDODataType="AttributeWithSDODataType"
+ AttributeWithSDOName="AttributeWithSDODataType"
+ AttributeWithSDOPropertySDOOppositePropertyType="idvalue0"
+ AttributeWithSDOPropertyType="idvalue0"
+ AttributeWithSDOString="AttributeWithSDOString"
+ AttributeReference="AttributeReference"/>
+</RootElement33>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33.xsd
new file mode 100644
index 0000000000..27f6c22d12
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop33.xsd
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <attribute name="AttributeReference" type="string"/>
+
+ <complexType name="ComplexTypeAttributesTestType">
+ <sequence>
+ </sequence>
+ <attribute name="Attribute" type="string"/>
+ <attribute name="AttributeWithSDOName" sdo:name="AttributeWithSDONameSDOName" type="string"/>
+ <attribute name="AttributeWithSDOAliasName" sdo:aliasName="AttributeWithSDOAliasNameSDOAliasName" type="string"/>
+ <attribute name="AttributeWithDefaultValue" type="string" default="AttributeWithDefaultValueDefaultValue"/>
+ <attribute name="AttributeWithFixedValue" type="string" fixed="AttributeWithFixedValueFixedValue"/>
+ <attribute ref="tns:AttributeReference"/>
+ <attribute name="AttributeWithSDOString" type="string" sdo:string="true"/>
+ <attribute name="AttributeWithSDOPropertyType" type="IDREF" sdo:propertyType="tns:SimpleTypeWithNameType"/>
+ <attribute name="AttributeWithSDOPropertySDOOppositePropertyType" type="IDREF" sdo:propertyType="tns:SimpleTypeWithNameType" sdo:oppositeProperty="tns:AttributeWithSDOPropertyType"/>
+ <attribute name="AttributeWithSDODataType" sdo:dataType="string" type="string"/>
+ </complexType>
+
+ <element name="RootElement33">
+ <complexType>
+ <sequence>
+ <element name="ComplexTypeAttributesTest" type="tns:ComplexTypeAttributesTestType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34-in.xml
new file mode 100644
index 0000000000..3c488be77c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement34 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop34.xsd">
+ <ElementWithSDOName>ElementWithSDOName</ElementWithSDOName>
+</tns:RootElement34>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34.xsd
new file mode 100644
index 0000000000..8fe33e9776
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop34.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <element name="RootElement34">
+ <complexType>
+ <sequence>
+ <element name="ElementWithSDOName" sdo:name="ElementWithSDONameSDOName" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35-in.xml
new file mode 100644
index 0000000000..63f84a91da
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement35 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop35.xsd">
+ <ElementWithSDOAliasName>
+ ElementWithSDOAliasName
+ </ElementWithSDOAliasName>
+</tns:RootElement35>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35.xsd
new file mode 100644
index 0000000000..706326b22f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop35.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <element name="RootElement35">
+ <complexType>
+ <sequence>
+ <element name="ElementWithSDOAliasName" sdo:aliasName="ElementWithSDOAliasNameSDOAliasName" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36-in.xml
new file mode 100644
index 0000000000..2a4b63f958
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36-in.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement36 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop36.xsd">
+ <ElementWithMaxOccurs>ElementWithMaxOccurs</ElementWithMaxOccurs>
+</tns:RootElement36>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36.xsd
new file mode 100644
index 0000000000..2e1c95b1c3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop36.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <element name="RootElement36">
+ <complexType>
+ <sequence>
+ <element name="ElementWithMaxOccurs" type="string" maxOccurs="2"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37-in.xml
new file mode 100644
index 0000000000..f25366e905
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37-in.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement37 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop37.xsd">
+ <Element1InChoice>Element1InChoice</Element1InChoice>
+ <Element2InChoice>Element2InChoice</Element2InChoice>
+</tns:RootElement37>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37.xsd
new file mode 100644
index 0000000000..b2afa51290
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop37.xsd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <group name="Group1">
+ <sequence>
+ <element name="Element1InChoice" type="string" maxOccurs="2"/>
+ <element name="Element2InChoice" type="string" />
+ </sequence>
+ </group>
+
+ <group name="Group2">
+ <sequence>
+ <element name="Element2InChoice" type="string" />
+ <element name="Element1InChoice" type="string" maxOccurs="2"/>
+ </sequence>
+ </group>
+
+ <element name="RootElement37">
+ <complexType>
+ <sequence>
+ <choice maxOccurs="3">
+ <group ref="tns:Group1"/>
+ <group ref="tns:Group2"/>
+ </choice>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38-in.xml
new file mode 100644
index 0000000000..5a97314a46
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38-in.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement38 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop38.xsd">
+ <ElementInAll>
+ <ElementInAllOne>ElementInAllOne</ElementInAllOne>
+ <ElementInAllTwo>ElementInAllTwo</ElementInAllTwo>
+ </ElementInAll>
+</tns:RootElement38>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38.xsd
new file mode 100644
index 0000000000..a4b406550a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop38.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <complexType name="ComplexTypeElementInAllTestType">
+ <all>
+ <element name="ElementInAllOne" type="string"/>
+ <element name="ElementInAllTwo" type="string"/>
+ </all>
+ </complexType>
+
+ <element name="RootElement38">
+ <complexType>
+ <sequence>
+ <choice maxOccurs="3">
+ <element name="ElementInAll" type="tns:ComplexTypeElementInAllTestType"/>
+ </choice>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop39-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop39-in.xml
new file mode 100644
index 0000000000..d6ec278d2a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop39-in.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement39 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop39.xsd">
+ <ElementWithNillable/>
+ <ElementWithNillable xsi:nil="true"/>
+</tns:RootElement39>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40-in.xml
new file mode 100644
index 0000000000..ac7a3835b7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40-in.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement40 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop40.xsd">
+
+ <ElementSubstitutionGroupBase>
+ <ElementInSubstitutionGroupBase>
+ ElementInSubstitutionGroupBase
+ </ElementInSubstitutionGroupBase>
+ </ElementSubstitutionGroupBase>
+
+ <ElementSubstitutionUnrelated>Some Data</ElementSubstitutionUnrelated>
+
+ <ElementSubstitutionGroupExtends>
+ <ElementInSubstitutionGroupBase>
+ ElementInSubstitutionGroupBase
+ </ElementInSubstitutionGroupBase>
+ <ElementInSubstitutionGroupExtends>
+ ElementInSubstitutionGroupExtends
+ </ElementInSubstitutionGroupExtends>
+ </ElementSubstitutionGroupExtends>
+
+
+</RootElement40>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40.xsd
new file mode 100644
index 0000000000..3e2ca8765a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop40.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <complexType name="ComplexTypeSubstitutionGroupBaseType">
+ <sequence>
+ <element name="ElementInSubstitutionGroupBase" type="string"/>
+ </sequence>
+ </complexType>
+ <element name="ElementSubstitutionGroupBase" type="tns:ComplexTypeSubstitutionGroupBaseType"/>
+
+ <element name="ElementSubstitutionGroupUnrelated" type="string" substitutionGroup="tns:ElementSubstitutionGroupBase"/>
+
+ <complexType name="ComplexTypeSubstitutionGroupExtendsType">
+ <complexContent>
+ <extension base="tns:ComplexTypeSubstitutionGroupBaseType">
+ <sequence>
+ <element name="ElementInSubstitutionGroupExtends" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="ElementSubstitutionGroupExtends" type="tns:ComplexTypeSubstitutionGroupExtendsType" substitutionGroup="tns:ElementSubstitutionGroupBase"/>
+
+ <element name="RootElement40">
+ <complexType>
+ <sequence>
+ <element ref="tns:ElementSubstitutionGroupBase" maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41-in.xml
new file mode 100644
index 0000000000..6fe9f99157
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement41 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop41.xsd">
+ <ElementOfSimpleTypeWithDefault>
+ ElementOfSimpleTypeWithDefaultDefault
+ </ElementOfSimpleTypeWithDefault>
+</tns:RootElement41>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41.xsd
new file mode 100644
index 0000000000..a473626f03
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop41.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <element name="RootElement41">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSimpleTypeWithDefault" type="string" default="ElementOfSimpleTypeWithDefaultDefault" />
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42-in.xml
new file mode 100644
index 0000000000..427f07b22b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement42 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop42.xsd">
+ <ElementOfSimpleTypeWithFixed>
+ ElementOfSimpleTypeWithFixedFixed
+ </ElementOfSimpleTypeWithFixed>
+</tns:RootElement42>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42.xsd
new file mode 100644
index 0000000000..99a9afecd1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop42.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+ <element name="RootElement42">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSimpleTypeWithFixed" type="string" fixed="ElementOfSimpleTypeWithFixedFixed" />
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43-in.xml
new file mode 100644
index 0000000000..005879cf42
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement43 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop43.xsd">
+ <ElementOfSimpleTypeWithSDOString>
+ ElementOfSimpleTypeWithSDOString
+ </ElementOfSimpleTypeWithSDOString>
+</tns:RootElement43>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43.xsd
new file mode 100644
index 0000000000..60d31e94cc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop43.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <element name="RootElement43">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSimpleTypeWithSDOString" type="string" sdo:string="true"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44-in.xml
new file mode 100644
index 0000000000..1170e4a991
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement44 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop44.xsd">
+ <ElementOfSimpleTypeWithSDOPropertyType>
+ idvalue0
+ </ElementOfSimpleTypeWithSDOPropertyType>
+</tns:RootElement44>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44.xsd
new file mode 100644
index 0000000000..45c74b90fa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop44.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <element name="RootElement44">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSimpleTypeWithSDOPropertyType" type="IDREF" sdo:propertyType="tns:SimpleTypeWithNameType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45-in.xml
new file mode 100644
index 0000000000..f0160f713a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement45 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop45.xsd">
+ <ElementOfSimpleTypeWithSDOOppositePropertyType>
+ idvalue0
+ </ElementOfSimpleTypeWithSDOOppositePropertyType>
+</tns:RootElement45>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45.xsd
new file mode 100644
index 0000000000..7a6236c9eb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop45.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+
+ <element name="RootElement45">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSimpleTypeWithSDOOppositePropertyType" type="IDREF" sdo:propertyType="tns:SimpleTypeWithNameType" sdo:oppositeProperty="tns:ElementOfSimpleTypeWithSDOPropertyType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46-in.xml
new file mode 100644
index 0000000000..f5ddf4a859
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46-in.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement46 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop46.xsd">
+ <ElementOfSimpleTypeWithSDODataType>
+ ElementOfSimpleTypeWithSDODataType
+ </ElementOfSimpleTypeWithSDODataType>
+</tns:RootElement46>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46.xsd
new file mode 100644
index 0000000000..54573c0bdb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop46.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+
+ <element name="RootElement46">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSimpleTypeWithSDODataType" type="string" sdo:dataType="string"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47-in.xml
new file mode 100644
index 0000000000..4cff425ea2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47-in.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<RootElement47 xmlns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop47.xsd">
+ <ElementOfSDOChangeSummaryType create="abc" delete="def" logging="true">
+ <ChangeSummaryElement>
+ ChangeSummaryText
+ </ChangeSummaryElement>
+ </ElementOfSDOChangeSummaryType>
+</RootElement47>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47.xsd
new file mode 100644
index 0000000000..be67383db3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop47.xsd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:sdo="commonj.sdo">
+
+ <import schemaLocation="datagraph.xsd" namespace="commonj.sdo"/>
+
+ <element name="RootElement47">
+ <complexType>
+ <sequence>
+ <element name="ElementOfSDOChangeSummaryType" type="sdo:ChangeSummaryType"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50-in.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50-in.xml
new file mode 100644
index 0000000000..5aa3d442a9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50-in.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<tns:RootElement50 xmlns:tns="http://www.apache.org/tuscany/interop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.apache.org/tuscany/interop interop50.xsd">
+ <anySimpleType>anySimpleType</anySimpleType>
+ <anyType>AnyTypeString</anyType>
+ <anyURI>http://tempuri.org</anyURI>
+ <base64Binary>ABCD</base64Binary>
+ <boolean>true</boolean>
+ <boolean>false</boolean>
+ <boolean>1</boolean>
+ <boolean>0</boolean>
+ <byte>128</byte>
+ <byte>-127</byte>
+ <date>2001-01-01</date>
+ <dateTime>2001-12-31T12:00:00</dateTime>
+ <decimal>-1.23456789</decimal>
+ <decimal>1.23456789</decimal>
+ <double>0.0</double>
+ <double>12.3E-4</double>
+ <duration>P1D</duration>
+ <float>0.0</float>
+ <gDay>---01</gDay>
+ <gMonth>--01--</gMonth>
+ <gMonthDay>--01-01</gMonthDay>
+ <gYear>2001</gYear>
+ <gYearMonth>2001-01</gYearMonth>
+ <hexBinary>0F00</hexBinary>
+ <ID>idvalue0</ID>
+ <IDREF>idvalue0</IDREF>
+ <IDREFS>idvalue0</IDREFS>
+ <int>-2147483648</int>
+ <int>2147483647</int>
+ <integer>-2147483648</integer>
+ <integer>2147483647</integer>
+ <language>EN</language>
+ <long>-9223372036854775808</long>
+ <long>9223372036854775807</long>
+ <Name>Name</Name>
+ <NCName>NCName</NCName>
+ <negativeInteger>-1</negativeInteger>
+ <NMTOKEN>NMTOKEN</NMTOKEN>
+ <NMTOKENS>NMTOKENS</NMTOKENS>
+ <nonNegativeInteger>0</nonNegativeInteger>
+ <nonPositiveInteger>0</nonPositiveInteger>
+ <normalizedString>normalizedString</normalizedString>
+ <NOTATION>tns:interop50</NOTATION>
+ <positiveInteger>1</positiveInteger>
+ <QName>QName</QName>
+ <short>-32768</short>
+ <short>32767</short>
+ <string>string</string>
+ <time>12:00:00</time>
+ <token>token</token>
+ <unsignedByte>0</unsignedByte>
+ <unsignedByte>255</unsignedByte>
+ <unsignedInt>0</unsignedInt>
+ <unsignedInt>4294967295</unsignedInt>
+ <unsignedLong>0</unsignedLong>
+ <unsignedLong>18446744073709551615</unsignedLong>
+ <unsignedShort>0</unsignedShort>
+ <unsignedShort>65535</unsignedShort>
+</tns:RootElement50>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50.xsd
new file mode 100644
index 0000000000..f2d4ed7679
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/resources/interop50.xsd
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.apache.org/tuscany/interop"
+ xmlns:tns="http://www.apache.org/tuscany/interop">
+
+<notation name="interop50" public="commonj.sdo"/>
+
+ <element name="RootElement50">
+ <complexType>
+ <sequence>
+ <element name="anySimpleType" type="anySimpleType" maxOccurs="unbounded"/>
+ <element name="anyType" type="anyType" maxOccurs="unbounded"/>
+ <element name="anyURI" type="anyURI" maxOccurs="unbounded"/>
+ <element name="base64Binary" type="base64Binary" maxOccurs="unbounded"/>
+ <element name="boolean" type="boolean" maxOccurs="unbounded"/>
+ <element name="byte" type="byte" maxOccurs="unbounded"/>
+ <element name="date" type="date" maxOccurs="unbounded"/>
+ <element name="dateTime" type="dateTime" maxOccurs="unbounded"/>
+ <element name="decimal" type="decimal" maxOccurs="unbounded"/>
+ <element name="double" type="double" maxOccurs="unbounded"/>
+ <element name="duration" type="duration" maxOccurs="unbounded"/>
+ <element name="float" type="float" maxOccurs="unbounded"/>
+ <element name="gDay" type="gDay" maxOccurs="unbounded"/>
+ <element name="gMonth" type="gMonth" maxOccurs="unbounded"/>
+ <element name="gMonthDay" type="gMonthDay" maxOccurs="unbounded"/>
+ <element name="gYear" type="gYear" maxOccurs="unbounded"/>
+ <element name="gYearMonth" type="gYearMonth" maxOccurs="unbounded"/>
+ <element name="hexBinary" type="hexBinary" maxOccurs="unbounded"/>
+ <element name="ID" type="ID" maxOccurs="unbounded"/>
+ <element name="IDREF" type="IDREF" maxOccurs="unbounded"/>
+ <element name="IDREFS" type="IDREFS" maxOccurs="unbounded"/>
+ <element name="int" type="int" maxOccurs="unbounded"/>
+ <element name="integer" type="integer" maxOccurs="unbounded"/>
+ <element name="language" type="language" maxOccurs="unbounded"/>
+ <element name="long" type="long" maxOccurs="unbounded"/>
+ <element name="Name" type="Name" maxOccurs="unbounded"/>
+ <element name="NCName" type="NCName" maxOccurs="unbounded"/>
+ <element name="negativeInteger" type="negativeInteger" maxOccurs="unbounded"/>
+ <element name="NMTOKEN" type="NMTOKEN" maxOccurs="unbounded"/>
+ <element name="NMTOKENS" type="NMTOKENS" maxOccurs="unbounded"/>
+ <element name="nonNegativeInteger" type="nonNegativeInteger" maxOccurs="unbounded"/>
+ <element name="nonPositiveInteger" type="nonPositiveInteger" maxOccurs="unbounded"/>
+ <element name="normalizedString" type="normalizedString" maxOccurs="unbounded"/>
+ <element name="NOTATION" maxOccurs="unbounded">
+ <simpleType >
+ <restriction base="NOTATION">
+ <enumeration value="tns:interop50"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="positiveInteger" type="positiveInteger" maxOccurs="unbounded"/>
+ <element name="QName" type="QName" maxOccurs="unbounded"/>
+ <element name="short" type="short" maxOccurs="unbounded"/>
+ <element name="string" type="string" maxOccurs="unbounded"/>
+ <element name="time" type="time" maxOccurs="unbounded"/>
+ <element name="token" type="token" maxOccurs="unbounded"/>
+ <element name="unsignedByte" type="unsignedByte" maxOccurs="unbounded"/>
+ <element name="unsignedInt" type="unsignedInt" maxOccurs="unbounded"/>
+ <element name="unsignedLong" type="unsignedLong" maxOccurs="unbounded"/>
+ <element name="unsignedShort" type="unsignedShort" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ </element>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/runtest.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/runtest.sh
new file mode 100755
index 0000000000..831246bbc6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/runtest.sh
@@ -0,0 +1,31 @@
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+cd $TUSCANY_SCACPP/test/ws.service.interop/deploy/bin
+
+# Start the axis http server. Output goes to a log file
+./runwsserver.sh > runwsserver.log &
+
+# The wget command makes sure the server has fully started up
+wget -O - http://localhost:9090/axis2/services
+
+# Run the tests against the server
+./runclient.sh
+
+# Finally, kill the axis http server by finding the PID
+kill -9 `ps | grep axis2_http_serv | cut -c1-6`
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am
new file mode 100644
index 0000000000..9fef007b19
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/test/ws.service.interop/deploy
+prgbindir=$(deploydir)/bin
+
+prgbin_PROGRAMS = ws.service.interop.client
+prgbin_SCRIPTS = runclient.sh
+EXTRA_DIST = runclient.sh
+
+AM_CPPFLAGS = $(CPPFLAGS)
+
+ws_service_interop_client_SOURCES = \
+TestClient.cpp
+
+ws_service_interop_client_LDADD = \
+-L$(TUSCANY_SCACPP)/lib \
+ -ltuscany_sca \
+-L$(TUSCANY_SDOCPP)/lib \
+ -ltuscany_sdo \
+ -ltuscany_sdo_axiom \
+-L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_wsdl \
+ -laxis2_engine \
+ -laxis2_parser \
+ -laxis2_minizip \
+ -lpthread \
+ -laxis2_http_sender \
+ -laxis2_http_receiver
+
+INCLUDES = \
+-I${AXIS2C_HOME}/include \
+-I${TUSCANY_SCACPP}/include \
+-I${TUSCANY_SDOCPP}/include
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp
new file mode 100644
index 0000000000..da3a90cff4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp
@@ -0,0 +1,375 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <axiom.h>
+#include <axis2_util.h>
+#include <axiom_soap.h>
+#include <axis2_client.h>
+
+#include <commonj/sdo/SDO.h>
+using namespace commonj::sdo;
+
+#include <sdo_axiom.h>
+using namespace commonj::sdo_axiom;
+
+#include <tuscany/sca/util/Utils.h>
+using namespace tuscany::sca;
+
+#include <string>
+#include <iostream>
+using namespace std;
+
+axiom_node_t* get_om_payload_from_xml_file(axis2_env_t *env, const char* currentTest);
+axiom_node_t* runCall(axis2_env_t *env, char* endpoint, char* opName, axiom_node_t* payload);
+void loadAllXSD();
+bool compareAxiomNodes(axiom_node_t* returned_payload, axiom_node_t* payload_data);
+
+XSDHelperPtr xsdHelper = NULL;
+XMLHelperPtr xmlHelper = NULL;
+
+
+int main(int argc, char** argv)
+{
+ axis2_env_t *env = NULL;
+ axis2_char_t *address = NULL;
+ axis2_char_t *testNumberString = "-1";
+
+ axis2_endpoint_ref_t* endpoint_ref = NULL;
+ axis2_options_t *options = NULL;
+ axis2_char_t *client_home = NULL;
+ axis2_svc_client_t* svc_client = NULL;
+ axiom_node_t *payload = NULL;
+ axiom_node_t *ret_node = NULL;
+
+ /* Set up the envioronment */
+ env = axis2_env_create_all("ws.service.interop.client.log", AXIS2_LOG_LEVEL_TRACE);
+
+ /* Set end point reference of echo service */
+ address = "http://localhost:9090/axis2/services/ws.service";
+ if (argc > 1 )
+ testNumberString = argv[1];
+ if (argc > 2 )
+ address = argv[2];
+ if (AXIS2_STRCMP(testNumberString, "-h") == 0)
+ {
+ cout<<"Usage : "<< argv[0] <<"[test_number] [endpoint_url]"<<endl;
+ cout<<"use -h for help"<<endl;
+ return 0;
+ }
+
+ int testNumber = atoi(testNumberString);
+ if(testNumber > 0 && testNumber <= 50)
+ {
+ cout<<"Running test : "<< testNumber << endl;
+ }
+ else
+ {
+ testNumber = -1;
+ cout<<"Running all tests" << endl;
+ }
+
+ cout<<"Using endpoint : "<< address << endl;
+
+ const string interop = "interop";
+
+ string currentTest;
+
+ int testsPassed = 0;
+ int testsRun = 0;
+ string failedTests = "";
+ string unsupportedTests = "";
+
+ loadAllXSD();
+
+ // Tests 1 to 50
+ for(int i=1; i<=50; i++)
+ {
+ if( testNumber != i &&
+ testNumber > 0 )
+ {
+ // Only running a single, chosen test
+ continue;
+ }
+ if( i==13 ||
+ i==48 ||
+ i==49 )
+ {
+ // Ignore non-existant schemas
+ continue;
+ }
+
+ currentTest = interop;
+ if(i<10)
+ {
+ currentTest.append("0");
+ }
+ char buf[3];
+ sprintf(buf, "%d", i);
+ currentTest.append(buf);
+
+ cout << "Running test " << currentTest << endl;
+
+ if( i==5 ||
+ i==25 ||
+ i==27 ||
+ i==39 )
+ {
+ cout << "We do not currently support schema " << currentTest << endl;
+ unsupportedTests += currentTest + " ";
+ continue;
+ }
+
+ testsRun++;
+
+ payload = get_om_payload_from_xml_file(env, currentTest.c_str());
+ axiom_node_t* returned_payload = NULL;
+ bool success = false;
+ if(payload)
+ {
+ returned_payload = runCall(env, address, (char*) currentTest.c_str(), payload);
+ }
+
+ if(returned_payload)
+ {
+ // Get the inner node to compare
+ axiom_node_t* payload_data = AXIOM_NODE_GET_FIRST_CHILD(payload, env);
+ success = compareAxiomNodes(returned_payload, payload_data);
+ }
+
+ if(success)
+ {
+ cout << currentTest << " PASSED!" << endl;
+ testsPassed++;
+ }
+ else
+ {
+ failedTests += currentTest + " ";
+ cout << currentTest << " FAILED!" << endl;
+ }
+
+ }
+ cout << "Passed " << testsPassed << " of " << testsRun << " tests" << endl;
+ if(failedTests.size() > 0)
+ {
+ string expectedFailedTests = "interop04 interop28 interop30 interop32 interop33 interop40 interop50";
+ cout << " Failed Tests: " << failedTests << endl;
+ cout << "Expected failures: " << expectedFailedTests << endl;
+ }
+ if(unsupportedTests.size() > 0)
+ {
+ cout << "Unsupported: " << unsupportedTests << endl;
+ }
+ return 0;
+}
+
+axiom_node_t* runCall(axis2_env_t *env, char* endpoint, char* opName, axiom_node_t* payload)
+{
+ axis2_char_t *address = endpoint;
+ axis2_endpoint_ref_t* endpoint_ref = NULL;
+ axis2_options_t *options = NULL;
+ axis2_char_t *client_home = NULL;
+ axis2_svc_client_t* svc_client = NULL;
+ axiom_node_t *ret_node = NULL;
+ axiom_node_t *ret = NULL;
+ char action [100];
+ int len = 0;
+
+ client_home = AXIS2_GETENV("AXIS2C_HOME");
+
+ /* Create EPR with given address */
+ endpoint_ref = axis2_endpoint_ref_create(env, address);
+
+ svc_client = axis2_svc_client_create(env, client_home);
+ if (!svc_client)
+ {
+ printf("Error creating service client\n");
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ return NULL;
+ }
+
+ options = axis2_options_create(env);
+
+ AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref);
+
+ len = sprintf(action, "http://www.WSEntryPointTest.org/WSEntryPointTest/%s", opName);
+ AXIS2_OPTIONS_SET_ACTION(options, env, action);
+
+ /* Set service client options */
+ AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options);
+
+ /* Engage addressing composite */
+ AXIS2_SVC_CLIENT_ENGAGE_MODULE(svc_client, env, AXIS2_MODULE_ADDRESSING);
+
+
+ /* Send request */
+ ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, payload);
+ if(ret_node)
+ {
+ ret = AXIOM_NODE_GET_FIRST_CHILD(ret_node, env);
+ if(!ret)
+ {
+ cout << "No data in response - failure on server" << endl;
+ }
+ }
+ else
+ {
+ cout << "request failed" << endl;
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
+ " %d :: %s", env->error->error_number,
+ AXIS2_ERROR_GET_MESSAGE(env->error));
+ }
+
+ if (svc_client)
+ {
+ AXIS2_SVC_CLIENT_FREE(svc_client, env);
+ svc_client = NULL;
+ }
+ if (endpoint_ref)
+ {
+ // The following line is commented out due to it causing a segmentation fault on Linux with Axis2C 0.93
+ // AXIS2_ENDPOINT_REF_FREE(endpoint_ref, env);
+ endpoint_ref = NULL;
+ }
+
+ return ret;
+}
+
+
+bool compareAxiomNodes(axiom_node_t* returned_payload, axiom_node_t* expected_payload)
+{
+ bool success = false;
+
+ AxiomHelper* axiomHelper = AxiomHelper::getHelper();
+ DataObjectPtr expectedDO = axiomHelper->toSdo(expected_payload, xsdHelper->getDataFactory());
+ DataObjectPtr returnedDO = axiomHelper->toSdo(returned_payload, xsdHelper->getDataFactory());
+
+ string diff;
+ success = Utils::compareDataObjects(expectedDO, returnedDO, diff);
+
+ if(!success)
+ {
+ cout << "Expected data does not match returned data:\n" << diff << "\nExpected data:"<<endl;
+ Utils::printDO(expectedDO);
+ cout << "Returned data:"<<endl;
+ Utils::printDO(returnedDO);
+ }
+ return success;
+}
+
+void loadAllXSD()
+{
+ const string resourcesDir = "./resources/";
+ const string dotxsd = ".xsd";
+
+ try
+ {
+ // Create an xsd helper
+ xsdHelper = HelperProvider::getXSDHelper();
+
+ // Tests 1 to 50
+ for(int i=1; i<=50; i++)
+ {
+ if( i==13 ||
+ i==48 ||
+ i==49 ||
+ i==5 ||
+ i==25 ||
+ i==27 ||
+ i==39 )
+ {
+ // Ignore non-existant/unsupported schemas
+ continue;
+ }
+
+ string currentTest = "interop";
+ if(i<10)
+ {
+ currentTest.append("0");
+ }
+ char buf[3];
+ sprintf(buf, "%d", i);
+ currentTest.append(buf);
+
+ string xsdFileName = resourcesDir + currentTest + dotxsd;
+ xsdHelper->defineFile(xsdFileName.c_str());
+ }
+
+ }
+ catch(SDORuntimeException& ex)
+ {
+ cout << "SDORuntimeException whilst loading xsd" << endl;
+ cout << ex.getMessageText() << endl;
+ }
+}
+
+/* build SOAP request message content using OM */
+axiom_node_t* get_om_payload_from_xml_file(axis2_env_t *env, const char* currentTest)
+{
+ axiom_node_t* req_om_node = NULL;
+ axiom_node_t* payload_om_node = NULL;
+ const string resourcesDir = "./resources/";
+ const string dotxml = "-in.xml";
+
+ string xmlFileName = resourcesDir + currentTest + dotxml;
+
+ try
+ {
+
+ xmlHelper = HelperProvider::getXMLHelper(xsdHelper->getDataFactory());
+
+ XMLDocumentPtr payloadFile = xmlHelper->loadFile(xmlFileName.c_str());
+ string rootElemURI = payloadFile->getRootElementURI();
+ string rootElemName = payloadFile->getRootElementName();
+
+ DataObjectPtr payloadDO = payloadFile->getRootDataObject();
+
+ AxiomHelper* axiomHelper = AxiomHelper::getHelper();
+ payload_om_node = axiomHelper->toAxiomNode(payloadDO, rootElemURI.c_str(), rootElemName.c_str());
+
+ if(!payload_om_node)
+ {
+ payload_om_node = axiomHelper->toAxiomNode(payloadDO);
+ }
+
+ if(payload_om_node)
+ {
+ axiom_element_t* req_om_elem = NULL;
+ axiom_namespace_t *ns1 = NULL;
+ axis2_char_t *om_str = NULL;
+
+ ns1 = axiom_namespace_create (env, "http://www.apache.org/tuscany/interop", "ns1");
+ req_om_elem = axiom_element_create(env, NULL, currentTest, ns1, &req_om_node);
+ AXIOM_NODE_DETACH(payload_om_node, env);
+ AXIOM_NODE_ADD_CHILD(req_om_node, env, payload_om_node);
+ }
+ else
+ {
+ cout << "Could not convert xml document("<< xmlFileName <<") to Axiom" << endl;
+ return NULL;
+ }
+
+ }
+ catch(SDORuntimeException& ex)
+ {
+ cout << "SDORuntimeException whilst loading xml ("<< xmlFileName <<") & converting to Axiom" << endl;
+ cout << ex.getMessageText() << endl;
+ return NULL;
+ }
+
+ return req_om_node;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.bat
new file mode 100644
index 0000000000..4ab0ea4cf3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.bat
@@ -0,0 +1,32 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo Using Axis2C installed at %AXIS2C_HOME%
+
+rem Run the client
+.\ws.service.interop.client.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.sh
new file mode 100755
index 0000000000..57e4b6b90f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/runclient.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+./ws.service.interop.client
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/ws.service.interop.client.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/ws.service.interop.client.vcproj
new file mode 100644
index 0000000000..2646bb025c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.client/ws.service.interop.client.vcproj
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="ws.service.interop.client"
+ ProjectGUID="{136C4966-3073-4EB0-9259-BC5E3B987D19}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(AXIS2C_HOME)/include, $(TUSCANY_SDOCPP)/include, $(TUSCANY_SCACPP)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="axiom.lib axis2_parser.lib axis2_util.lib axis2_engine.lib tuscany_sdo.lib tuscany_sdo_axiom.lib tuscany_sca.lib"
+ OutputFile="$(OutDir)/ws.service.interop.client.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(AXIS2C_HOME)/lib, $(TUSCANY_SDOCPP)/lib, $(TUSCANY_SCACPP)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/ws.service.interop.client.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\deploy.cmd"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/service.ws.binding.client.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\TestClient.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ <File
+ RelativePath=".\runclient.bat">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.sln b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.sln
new file mode 100644
index 0000000000..b0bda8950b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop.sln
@@ -0,0 +1,30 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ws.service.interop", "ws.service.interop\ws.service.interop.vcproj", "{25B65303-B2E2-47AF-968C-89D9E58611F8}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ws.service.interop.client", "ws.service.interop.client\ws.service.interop.client.vcproj", "{136C4966-3073-4EB0-9259-BC5E3B987D19}"
+ ProjectSection(ProjectDependencies) = postProject
+ {25B65303-B2E2-47AF-968C-89D9E58611F8} = {25B65303-B2E2-47AF-968C-89D9E58611F8}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Debug.ActiveCfg = Debug|Win32
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Debug.Build.0 = Debug|Win32
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Release.ActiveCfg = Release|Win32
+ {25B65303-B2E2-47AF-968C-89D9E58611F8}.Release.Build.0 = Release|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Debug.ActiveCfg = Debug|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Debug.Build.0 = Debug|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Release.ActiveCfg = Release|Win32
+ {136C4966-3073-4EB0-9259-BC5E3B987D19}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Makefile.am
new file mode 100644
index 0000000000..d8a82e241a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Makefile.am
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+deploydir=$(prefix)/test/ws.service.interop/deploy
+compositedir=$(deploydir)/packages/ws.service.interop
+prgbindir=$(deploydir)/bin
+
+BUILT_SOURCES = TestImpl_TestService_Proxy.cpp \
+TestImpl_TestService_Wrapper.cpp
+
+noinst_HEADERS = *.h
+
+${BUILT_SOURCES}: ws.service.interop.composite
+ java -jar $(TUSCANY_SCACPP)/bin/scagen.jar -dir . -output . -verbose
+
+prgbin_SCRIPTS = runwsserver.sh
+
+composite_LTLIBRARIES = libws_service_interop.la
+composite_DATA = ws.service.interop.composite *.componentType
+EXTRA_DIST = ws.service.interop.composite *.componentType runwsserver.sh
+
+libws_service_interop_la_SOURCES = \
+TestImpl.cpp \
+TestImpl_TestService_Proxy.cpp \
+TestImpl_TestService_Wrapper.cpp
+
+libws_service_interop_la_LIBADD = \
+-L${TUSCANY_SCACPP}/lib \
+ -ltuscany_sca \
+-L${TUSCANY_SCACPP}/extensions/cpp/lib \
+ -ltuscany_sca_cpp \
+-L${TUSCANY_SDOCPP}/lib \
+ -ltuscany_sdo
+
+INCLUDES = \
+-I$(TUSCANY_SCACPP)/extensions/cpp/include \
+-I$(TUSCANY_SCACPP)/include \
+-I${TUSCANY_SDOCPP}/include
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Test.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Test.h
new file mode 100644
index 0000000000..59f55984e7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/Test.h
@@ -0,0 +1,82 @@
+/*
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef TEST_H
+#define TEST_H
+
+#include <commonj/sdo/SDO.h>
+#include <stdio.h>
+#include <string>
+using std::string;
+
+class Test
+{
+public:
+ virtual DataObjectPtr interop01(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop02(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop03(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop04(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop05(DataObjectPtr arg1) = 0;
+ virtual string interop06(string arg1) = 0;
+ virtual DataObjectPtr interop07(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop08(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop09(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop10(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop11(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop12(DataObjectPtr arg1) = 0;
+ //virtual DataObjectPtr interop13(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop14(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop15(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop16(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop17(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop18(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop19(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop20(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop21(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop22(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop23(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop24(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop25(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop26(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop27(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop28(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop29(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop30(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop31(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop32(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop33(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop34(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop35(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop36(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop37(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop38(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop39(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop40(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop41(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop42(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop43(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop44(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop45(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop46(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop47(DataObjectPtr arg1) = 0;
+ //virtual DataObjectPtr interop48(DataObjectPtr arg1) = 0;
+ //virtual DataObjectPtr interop49(DataObjectPtr arg1) = 0;
+ virtual DataObjectPtr interop50(DataObjectPtr arg1) = 0;
+};
+
+#endif
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.componentType
new file mode 100644
index 0000000000..d0cca1882d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.componentType
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ASCII"?>
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="TestService">
+ <interface.cpp header="Test.h"/>
+ </service>
+
+</componentType>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.cpp
new file mode 100644
index 0000000000..c99667e362
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.cpp
@@ -0,0 +1,509 @@
+/*
++----------------------------------------------------------------------+
+| (c) Copyright IBM Corporation 2005. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#include "TestImpl.h"
+
+#include <tuscany/sca/util/Utils.h>
+#include <tuscany/sca/core/SCARuntime.h>
+#include <tuscany/sca/model/Component.h>
+#include <tuscany/sca/model/Composite.h>
+using namespace tuscany::sca;
+#include <commonj/sdo/SDO.h>
+using namespace commonj::sdo;
+
+#include <stdio.h>
+
+#include <string>
+using std::string;
+
+TestImpl::TestImpl()
+{
+}
+
+TestImpl::~TestImpl()
+{
+}
+
+bool TestImpl::compareWithFile(DataObjectPtr suppliedDO, string test)
+{
+ Composite* composite = SCARuntime::getInstance()->getCurrentComponent()->getComposite();
+ string rootPath = composite->getRoot();
+ string xmlFileName = rootPath+"/"+test+"-in.xml";
+
+ XMLHelperPtr helper = composite->getXMLHelper();
+ XMLDocumentPtr expectedDoc = helper->loadFile(xmlFileName.c_str());
+ DataObjectPtr expectedDO = expectedDoc->getRootDataObject();
+
+ printf( "Comparing supplied DataObject against expected DataObject\n");
+
+ string diff = "";
+ bool result = Utils::compareDataObjects(suppliedDO, expectedDO, diff);
+ if(!result)
+ {
+ printf("Supplied DO differs from expected DO:\n%s\nSupplied DO:\n", diff.c_str() );
+ Utils::printDO(suppliedDO);
+ printf("Expected DO:\n");
+ Utils::printDO(expectedDO);
+ }
+ else
+ {
+ printf("DataObjects match!\n");
+ }
+
+ return result;
+}
+
+DataObjectPtr TestImpl::interop01(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop01 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop01"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop02(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop02 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop02"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop03(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop03 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop03"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop04(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop04 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop04"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop05(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop05 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop05"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+string TestImpl::interop06(string arg1)
+{
+ printf("TestImpl::interop06 %s\n", arg1.c_str());
+ return arg1;
+}
+DataObjectPtr TestImpl::interop07(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop07 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop07"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop08(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop08 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop08"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop09(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop09 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop09"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop10(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop10 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop10"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop11(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop11 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop11"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop12(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop12 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop12"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+// DataObjectPtr TestImpl::interop13(DataObjectPtr arg1)
+// {
+// printf("TestImpl::interop13 %s\n", arg1->getType().getURI());
+// Utils::printDO(arg1);
+// return arg1;
+// }
+DataObjectPtr TestImpl::interop14(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop14 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop14"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop15(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop15 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop15"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop16(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop16 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop16"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop17(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop17 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop17"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop18(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop18 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop18"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop19(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop19 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop19"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop20(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop20 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop20"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop21(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop21 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop21"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop22(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop22 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop22"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop23(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop23 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop23"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop24(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop24 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop24"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop25(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop25 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop25"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop26(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop26 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop26"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop27(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop27 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop27"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop28(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop28 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop28"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop29(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop29 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop29"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop30(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop30 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop30"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop31(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop31 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop31"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop32(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop32 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop32"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop33(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop33 %s\n", arg1->getType().getURI());
+ bool result = compareWithFile(arg1, "interop33");
+ if(result)
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop34(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop34 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop34"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop35(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop35 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop35"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop36(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop36 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop36"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop37(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop37 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop37"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop38(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop38 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop38"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop39(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop39 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop39"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop40(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop40 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop40"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop41(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop41 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop41"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop42(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop42 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop42"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop43(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop43 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop43"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop44(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop44 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop44"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop45(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop45 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop45"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop46(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop46 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop46"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+DataObjectPtr TestImpl::interop47(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop47 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop47"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
+// DataObjectPtr TestImpl::interop48(DataObjectPtr arg1)
+// {
+// printf("TestImpl::interop48 %s\n", arg1->getType().getURI());
+// Utils::printDO(arg1);
+// return arg1;
+// }
+// DataObjectPtr TestImpl::interop49(DataObjectPtr arg1)
+// {
+// printf("TestImpl::interop49 %s\n", arg1->getType().getURI());
+// Utils::printDO(arg1);
+// return arg1;
+// }
+DataObjectPtr TestImpl::interop50(DataObjectPtr arg1)
+{
+ printf("TestImpl::interop50 %s\n", arg1->getType().getURI());
+ if(compareWithFile(arg1, "interop50"))
+ {
+ return arg1;
+ }
+ return NULL;
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.h
new file mode 100644
index 0000000000..2f4f57e475
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/TestImpl.h
@@ -0,0 +1,84 @@
+/*
++----------------------------------------------------------------------+
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you |
+| may not use this file except in compliance with the License. You may |
+| obtain a copy of the License at |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
+| implied. See the License for the specific language governing |
+| permissions and limitations under the License. |
++----------------------------------------------------------------------+
+*/
+
+#ifndef TESTIMPL_H
+#define TESTIMPL_H
+
+#include "Test.h"
+
+class TestImpl : public Test
+{
+public:
+ TestImpl();
+ virtual ~TestImpl();
+
+ // Test interface
+ virtual DataObjectPtr interop01(DataObjectPtr arg1);
+ virtual DataObjectPtr interop02(DataObjectPtr arg1);
+ virtual DataObjectPtr interop03(DataObjectPtr arg1);
+ virtual DataObjectPtr interop04(DataObjectPtr arg1);
+ virtual DataObjectPtr interop05(DataObjectPtr arg1);
+ virtual string interop06(string arg1);
+ virtual DataObjectPtr interop07(DataObjectPtr arg1);
+ virtual DataObjectPtr interop08(DataObjectPtr arg1);
+ virtual DataObjectPtr interop09(DataObjectPtr arg1);
+ virtual DataObjectPtr interop10(DataObjectPtr arg1);
+ virtual DataObjectPtr interop11(DataObjectPtr arg1);
+ virtual DataObjectPtr interop12(DataObjectPtr arg1);
+ //virtual DataObjectPtr interop13(DataObjectPtr arg1);
+ virtual DataObjectPtr interop14(DataObjectPtr arg1);
+ virtual DataObjectPtr interop15(DataObjectPtr arg1);
+ virtual DataObjectPtr interop16(DataObjectPtr arg1);
+ virtual DataObjectPtr interop17(DataObjectPtr arg1);
+ virtual DataObjectPtr interop18(DataObjectPtr arg1);
+ virtual DataObjectPtr interop19(DataObjectPtr arg1);
+ virtual DataObjectPtr interop20(DataObjectPtr arg1);
+ virtual DataObjectPtr interop21(DataObjectPtr arg1);
+ virtual DataObjectPtr interop22(DataObjectPtr arg1);
+ virtual DataObjectPtr interop23(DataObjectPtr arg1);
+ virtual DataObjectPtr interop24(DataObjectPtr arg1);
+ virtual DataObjectPtr interop25(DataObjectPtr arg1);
+ virtual DataObjectPtr interop26(DataObjectPtr arg1);
+ virtual DataObjectPtr interop27(DataObjectPtr arg1);
+ virtual DataObjectPtr interop28(DataObjectPtr arg1);
+ virtual DataObjectPtr interop29(DataObjectPtr arg1);
+ virtual DataObjectPtr interop30(DataObjectPtr arg1);
+ virtual DataObjectPtr interop31(DataObjectPtr arg1);
+ virtual DataObjectPtr interop32(DataObjectPtr arg1);
+ virtual DataObjectPtr interop33(DataObjectPtr arg1);
+ virtual DataObjectPtr interop34(DataObjectPtr arg1);
+ virtual DataObjectPtr interop35(DataObjectPtr arg1);
+ virtual DataObjectPtr interop36(DataObjectPtr arg1);
+ virtual DataObjectPtr interop37(DataObjectPtr arg1);
+ virtual DataObjectPtr interop38(DataObjectPtr arg1);
+ virtual DataObjectPtr interop39(DataObjectPtr arg1);
+ virtual DataObjectPtr interop40(DataObjectPtr arg1);
+ virtual DataObjectPtr interop41(DataObjectPtr arg1);
+ virtual DataObjectPtr interop42(DataObjectPtr arg1);
+ virtual DataObjectPtr interop43(DataObjectPtr arg1);
+ virtual DataObjectPtr interop44(DataObjectPtr arg1);
+ virtual DataObjectPtr interop45(DataObjectPtr arg1);
+ virtual DataObjectPtr interop46(DataObjectPtr arg1);
+ virtual DataObjectPtr interop47(DataObjectPtr arg1);
+ //virtual DataObjectPtr interop48(DataObjectPtr arg1);
+ //virtual DataObjectPtr interop49(DataObjectPtr arg1);
+ virtual DataObjectPtr interop50(DataObjectPtr arg1);
+private:
+ virtual bool compareWithFile(DataObjectPtr arg1, string test);
+};
+
+#endif
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.bat
new file mode 100644
index 0000000000..804688fc56
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.bat
@@ -0,0 +1,49 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+setlocal
+
+if "%TUSCANY_SCACPP%" == "" (
+echo "TUSCANY_SCACPP not set"
+goto end
+)
+echo using SCA installed at %TUSCANY_SCACPP%
+
+if "%TUSCANY_SDOCPP%" == "" (
+echo "TUSCANY_SDOCPP not set"
+goto end
+)
+echo using SDO installed at %TUSCANY_SDOCPP%
+
+if "%AXIS2C_HOME%" == "" (
+echo "AXIS2C_HOME not set"
+goto end
+)
+echo using Axis2C installed at %AXIS2C_HOME%
+
+set TUSCANY_SCACPP_SYSTEM_ROOT=%~d0%~p0\..\
+set TUSCANY_SCACPP_DEFAULT_COMPONENT=ws.service.interop.solution.component
+
+set PATH=%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
+
+cd %AXIS2C_HOME%\bin
+.\axis2_http_server.exe
+
+:end
+endlocal
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.sh
new file mode 100755
index 0000000000..ec0a75188b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/runwsserver.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+APFULLDIR=`pwd`
+
+if [ x$TUSCANY_SCACPP = x ]; then
+echo "TUSCANY_SCACPP not set"
+exit;
+fi
+echo "Using SCA installed at $TUSCANY_SCACPP"
+
+if [ x$TUSCANY_SDOCPP = x ]; then
+echo "TUSCANY_SDOCPP not set"
+exit;
+fi
+echo "Using SDO installed at $TUSCANY_SDOCPP"
+
+if [ x$AXIS2C_HOME = x ]; then
+echo "AXIS2C_HOME not set"
+exit;
+fi
+echo "Using Axis2C installed at $AXIS2C_HOME"
+
+TEST_SYSTEM=$APFULLDIR/../
+
+export LD_LIBRARY_PATH=$TUSCANY_SCACPP/lib:$TUSCANY_SCACPP/extensions/cpp/lib:$TUSCANY_SDOCPP/lib:$AXIS2C_HOME/lib:$LD_LIBRARY_PATH
+
+export TUSCANY_SCACPP_SYSTEM_ROOT=$TEST_SYSTEM
+export TUSCANY_SCACPP_DEFAULT_COMPONENT=ws.service.interop.solution.component
+
+cd $AXIS2C_HOME/bin
+./axis2_http_server
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.composite
new file mode 100644
index 0000000000..997aebfdc0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.composite
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="ws.service.interop">
+
+ <!-- Expose as a web service -->
+ <service name="ws.service">
+ <interface.wsdl interface="http://www.apache.org/tuscany/interop#wsdl.interface(interop)"/>
+ <binding.ws/>
+ <reference>ws.service.interop.component/TestService</reference>
+ </service>
+
+
+ <component name="ws.service.interop.component">
+ <implementation.cpp library="ws_service_interop" header="TestImpl.h"/>
+ </component>
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.solution.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.solution.composite
new file mode 100644
index 0000000000..4a47d431a8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.solution.composite
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="ws.service.interop.solution">
+
+
+ <component name="ws.service.interop.solution.component">
+ <implementation.composite name="ws.service.interop" />
+ </component>
+
+</composite>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.vcproj b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.vcproj
new file mode 100644
index 0000000000..56ffe19400
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.vcproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="ws.service.interop"
+ ProjectGUID="{25B65303-B2E2-47AF-968C-89D9E58611F8}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="2"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SCACPP)/include,$(TUSCANY_SCACPP)/extensions/cpp/include,$(TUSCANY_SDOCPP)/include,$(AXIS2C_HOME)/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sca.lib tuscany_sdo.lib tuscany_sca_cpp.lib axiom.lib tuscany_sdo_axiom.lib axis2_util.lib"
+ OutputFile="$(OutDir)/ws_service_interop.dll"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(TUSCANY_SCACPP)/lib,$(TUSCANY_SCACPP)/extensions/cpp/lib,$(TUSCANY_SDOCPP)/lib,$(AXIS2C_HOME)/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/service.ws.binding.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(TUSCANY_SCACPP)/bin/scagen.cmd -dir . -output . -verbose"
+ ExcludedFromBuild="FALSE"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="4"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/service.ws.binding.exe"
+ LinkIncremental="1"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+ <File
+ RelativePath=".\TestImpl.cpp">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Proxy.cpp">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Wrapper.cpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+ <File
+ RelativePath=".\Test.h">
+ </File>
+ <File
+ RelativePath=".\TestImpl.h">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Proxy.h">
+ </File>
+ <File
+ RelativePath=".\TestImpl_TestService_Wrapper.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+ <File
+ RelativePath=".\runwsserver.bat">
+ </File>
+ <File
+ RelativePath=".\runwsserver.sh">
+ </File>
+ <File
+ RelativePath=".\TestImpl.componentType">
+ </File>
+ <File
+ RelativePath=".\ws.service.interop.composite">
+ </File>
+ <File
+ RelativePath=".\ws.service.interop.solution.composite">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/Makefile.am
new file mode 100644
index 0000000000..5bea4c88d5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS = scagen \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/LICENSE b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/LICENSE
new file mode 100755
index 0000000000..f433b1a53f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/NOTICE b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/NOTICE
new file mode 100644
index 0000000000..bfb81409ad
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/NOTICE
@@ -0,0 +1,2 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/) \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/README b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/README
new file mode 100644
index 0000000000..2831dadd94
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/META-INF/README
@@ -0,0 +1,19 @@
+Apache Tuscany C++ M1 build (July, 2006)
+===================================
+
+http://incubator.apache.org/tuscany
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+Thank you for using Tuscany!
+
+The Tuscany Team.
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/Makefile.am b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/Makefile.am
new file mode 100644
index 0000000000..a9df10fc30
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/Makefile.am
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+SUBDIRS =
+
+BUILT_SOURCES = scagen_build
+EXTRA_DIST = build.xml scagen.sh scagen.cmd src META-INF
+bin_SCRIPTS = scagen.sh scagen.cmd
+
+scagen_build:
+ ant
+ touch scagen_build
+
+clean:
+ rm -f scagen_build
+
+install-exec-hook:
+ cp bld/scagen.jar $(bindir)
+
+
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/build.xml b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/build.xml
new file mode 100644
index 0000000000..a7bb207ee3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/build.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<project name="org.apache.tuscany.sca.cpp.tools" default="all" basedir=".">
+
+ <target name="init">
+ <property name="build.result.folder" value="${basedir}/bld" />
+ <property name="temp.folder" value="${basedir}/tmp" />
+ <property name="junit.jar.folder" value="${basedir}/lib" />
+ <property name="tool.name" value="scagen" />
+ <property name="bin.dir" value="${basedir}/../../deploy/bin" />
+ </target>
+
+ <!-- Add "test" to the depends list below to add auto-testing to the build -->
+ <!-- a junit.jar is needed at ${junit.jar.folder}/junit.jar though -->
+ <target name="all" depends="init,jars,doc,scripts,zip.all">
+ </target>
+
+ <target name="test" depends="init,jars,test.jar">
+ <java classname="org.apache.tuscany.sca.cpp.tools.junit.TestAllCompositesTest">
+ <classpath>
+ <pathelement location="${build.result.folder}/test.jar" />
+ <pathelement location="${junit.jar.folder}/junit.jar" />
+ <pathelement location="${build.result.folder}/scagen.jar" />
+ <pathelement path="${java.class.path}" />
+ </classpath>
+ </java>
+ </target>
+
+
+
+ <target name="doc">
+ <javadoc packagenames="org.apache.tuscany.sca.cpp.tools.*" sourcepath="src" defaultexcludes="yes" destdir="docs/api" author="true" version="true" use="true" windowtitle="SCA for C++ Tools">
+ <doctitle>
+ <![CDATA[<h1>SCA for C++ Tools</h1>]]>
+ </doctitle>
+ <bottom>
+ <![CDATA[<i>Copyright 2005 The Apache Software Foundation or its licensors, as applicable.</i>]]></bottom>
+ <group title="C++ Parser" packages="org.apache.tuscany.sca.cpp.tools.common" />
+ <group title="SCA Services Generator" packages="org.apache.tuscany.sca.cpp.tools.services" />
+ <link offline="true" href="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:\tmp" />
+</javadoc>
+</target>
+
+<target name="jars" depends="init, scagen.jar, src.jar">
+</target>
+
+<target name="scripts" depends="init">
+<mkdir dir="${build.result.folder}" />
+<copy file="scagen.cmd" todir="${build.result.folder}" />
+<copy file="scagen.sh" todir="${build.result.folder}" />
+</target>
+
+
+
+<target name="src.jar" depends="init">
+<delete dir="${temp.folder}/src.jar.bin" />
+<mkdir dir="${temp.folder}/src.jar.bin" />
+<!-- Copy necessary resources i.e XSL stylesheets, test input etc
+ for the src jar too
+ -->
+<copy todir="${temp.folder}/src.jar.bin" failonerror="true">
+ <fileset dir="src/" />
+</copy>
+<mkdir dir="${build.result.folder}" />
+<jar jarfile="${build.result.folder}/src.jar" basedir="${temp.folder}/src.jar.bin" />
+<delete dir="${temp.folder}/test.jar.bin" />
+</target>
+
+<target name="test.jar" depends="init, scagen.jar" unless="test.jar" description="Create jar for unit tests: test.jar.">
+<delete dir="${temp.folder}/test.jar.bin" />
+<mkdir dir="${temp.folder}/test.jar.bin" />
+<!-- compile the source code -->
+<javac srcdir="junit" destdir="${temp.folder}/test.jar.bin" failonerror="true" includeAntRuntime="no">
+ <src path="junit/" />
+ <classpath>
+ <pathelement path="${junit.jar.folder}/junit.jar" />
+ <pathelement path="${build.result.folder}/scagen.jar" />
+ </classpath>
+</javac>
+<!-- Copy necessary resources i.e XSL stylesheets, test input etc -->
+<copy todir="${temp.folder}/test.jar.bin" failonerror="true">
+ <fileset dir="junit/" excludes="testoutput/**" />
+</copy>
+<mkdir dir="${build.result.folder}" />
+<jar jarfile="${build.result.folder}/test.jar" basedir="${temp.folder}/test.jar.bin" />
+<delete dir="${temp.folder}/test.jar.bin" />
+</target>
+
+<target name="scagen.jar" depends="init" unless="scagen.jar" description="Create main jar: scagen.jar">
+<delete dir="${temp.folder}/scagen.jar.bin" />
+<mkdir dir="${temp.folder}/scagen.jar.bin" />
+<!-- compile the source code -->
+<javac srcdir="src" destdir="${temp.folder}/scagen.jar.bin" failonerror="true" includeAntRuntime="no">
+ <src path="src/" />
+</javac>
+<!-- Copy necessary resources i.e XSL stylesheets, test input etc -->
+<copy todir="${temp.folder}/scagen.jar.bin" failonerror="true">
+ <fileset dir="src/" excludes="**/*.java" />
+</copy>
+
+<copy todir="${temp.folder}/scagen.jar.bin/META-INF" failonerror="true">
+ <fileset dir="META-INF/"/>
+</copy>
+
+<mkdir dir="${build.result.folder}" />
+<jar jarfile="${build.result.folder}/scagen.jar" basedir="${temp.folder}/scagen.jar.bin">
+ <manifest>
+ <attribute name="Main-Class" value="org.apache.tuscany.sca.cpp.tools.services.Scagen" />
+ </manifest>
+</jar>
+<delete dir="${temp.folder}/scagen.jar.bin" />
+</target>
+
+<target name="tobin" depends="jars, scripts" description="move the desired stuff to bin">
+ <move file="${build.result.folder}/scagen.cmd" todir="${bin.dir}" />
+ <move file="${build.result.folder}/scagen.sh" todir="${bin.dir}" />
+ <move file="${build.result.folder}/scagen.jar" todir="${bin.dir}" />
+</target>
+
+
+
+<target name="clean" depends="init" description="Clean of all the files created.">
+<delete file="${build.result.folder}/test.jar" />
+<delete file="${build.result.folder}/src.jar" />
+<delete file="${build.result.folder}/scagen.jar" />
+<delete file="${build.result.folder}/org.apache.tuscany.sca.cpp.tools.zip" />
+<delete dir="${temp.folder}" />
+</target>
+
+<target name="zip.all" depends="jars" description="Create a zip containing everything">
+<delete file="${build.result.folder}/org.apache.tuscany.sca.cpp.tools.zip" />
+<zip zipfile="${build.result.folder}/org.apache.tuscany.sca.cpp.tools.zip" excludes="bin/**,tmp/**,lib/**,junit/testoutput/**" basedir="." filesonly="true" whenempty="skip" update="false" />
+<delete dir="${temp.folder}" />
+</target>
+
+</project> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/CalculatorTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/CalculatorTest.java
new file mode 100644
index 0000000000..d7af1ab841
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/CalculatorTest.java
@@ -0,0 +1,32 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+import org.apache.tuscany.sca.cpp.tools.junit.TuscanyTestCase;
+
+/**
+ * This test case tests a simple Calculator service tools generation
+ */
+public class CalculatorTest extends TuscanyTestCase {
+
+ public void testCalculatorCompositeAndComponent() {
+ testComposite("CalculatorCompositeAndComponent", check_results);
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/EnvHandlerTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/EnvHandlerTest.java
new file mode 100644
index 0000000000..870937b6ca
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/EnvHandlerTest.java
@@ -0,0 +1,47 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite SCA composite as
+ * input data.
+ */
+public class EnvHandlerTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public EnvHandlerTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceComposite", check_results);
+ }
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceButNotInClassAttrTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceButNotInClassAttrTest.java
new file mode 100644
index 0000000000..9e70d06b7f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceButNotInClassAttrTest.java
@@ -0,0 +1,90 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr SCA composite as
+ * input data.
+ */
+public class ImplClassWithNameSpaceButNotInClassAttrTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public ImplClassWithNameSpaceButNotInClassAttrTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr", check_results);
+ }
+
+}
+*
+* Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr SCA composite as
+ * input data.
+ */
+public class ImplClassWithNameSpaceButNotInClassAttrTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public ImplClassWithNameSpaceButNotInClassAttrTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr", check_results);
+ }
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceTest.java
new file mode 100644
index 0000000000..94b7c70854
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceTest.java
@@ -0,0 +1,47 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite SCA composite as
+ * input data.
+ */
+public class ImplClassWithNameSpaceTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public ImplClassWithNameSpaceTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceCompositeImplClassWithNamespace", check_results);
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceButNotInClassAttrTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceButNotInClassAttrTest.java
new file mode 100644
index 0000000000..7dd2abdc98
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceButNotInClassAttrTest.java
@@ -0,0 +1,47 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite SCA composite as
+ * input data.
+ */
+public class IntfClassWithNameSpaceButNotInClassAttrTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public IntfClassWithNameSpaceButNotInClassAttrTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr", check_results);
+ }
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceTest.java
new file mode 100644
index 0000000000..90c4d7dcac
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceTest.java
@@ -0,0 +1,47 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite SCA composite as
+ * input data.
+ */
+public class IntfClassWithNameSpaceTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public IntfClassWithNameSpaceTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceCompositeIntfClassWithNamespace", check_results);
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/MissingCompositeAndFragmentTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/MissingCompositeAndFragmentTest.java
new file mode 100644
index 0000000000..a094a1c66c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/MissingCompositeAndFragmentTest.java
@@ -0,0 +1,47 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite SCA composite as
+ * input data.
+ */
+public class MissingCompositeAndFragmentTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public MissingCompositeAndFragmentTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+ testComposite("MyValueServiceCompositeMissingScaComposite",check_results);
+ }
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/SimplePublicPrivateProtectedTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/SimplePublicPrivateProtectedTest.java
new file mode 100644
index 0000000000..cb980e6d27
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/SimplePublicPrivateProtectedTest.java
@@ -0,0 +1,48 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+/**
+ * This is a "run this first" testcase that just tests some simple operations of
+ * the scagen tools it uses the
+ * Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite SCA composite as
+ * input data.
+ */
+public class SimplePublicPrivateProtectedTest extends TuscanyTestCase {
+
+ /**
+ * Constructor for CustomerInfoTestOLD.
+ *
+ * @param arg0
+ */
+ public SimplePublicPrivateProtectedTest(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Test the Hydra.sca.core\test\testSCASystem\composites\MyValueServiceComposite
+ * proxy and wrapper generation.
+ */
+ public void testEnvHandler() {
+
+ testComposite("SimplePublicPrivateProtectedTest", check_results);
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestAllCompositesTest.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestAllCompositesTest.java
new file mode 100644
index 0000000000..f72ade38d3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestAllCompositesTest.java
@@ -0,0 +1,88 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.tuscany.sca.cpp.tools.junit.TuscanyTestCase;
+
+/**
+ * This test case will test all the composites placed in the "composites" directory
+ * against the results in their repectice "expected_results" folders.
+ */
+public class TestAllCompositesTest extends TuscanyTestCase {
+
+ String testsDir = TuscanyTestCase.junit_composites;
+
+ Set excludes = new HashSet();
+
+ public TestAllCompositesTest(String arg0) {
+ super(arg0);
+ excludes.add("MyValueServiceCompositeMissingScaComposite");
+ excludes.add("CVS");
+ excludes.add(".svn");
+ }
+
+
+ /* main exists to allow running from the java ant task */
+ public static void main(String[] args) {
+ TestAllCompositesTest test = new TestAllCompositesTest("");
+ test.testAllCompositesRegression();
+ }
+
+ public void testAllCompositesRegression() {
+ File dir = new File(testsDir);
+
+ if (dir.isDirectory()) {
+ System.out.println("Testing all composites under "
+ + dir.getAbsolutePath());
+ String[] test_composites = dir.list();
+
+ for (int i = 0; i < test_composites.length; i++) {
+ File test_composite = new File(testsDir, test_composites[i]);
+
+ String composite_name = null;
+ if (test_composite.isDirectory()) {
+ composite_name = test_composite.getName();
+ if (!excludes.contains(composite_name.intern())) {
+ testComposite(composite_name, check_results);
+ System.out.println("Test of composite \"" + composite_name
+ + "\" passed.");
+ continue;
+ } else {
+ System.out
+ .println("Ignoring excluded composite subdirectory \""
+ + composite_name + "\"");
+ }
+ }
+ }
+
+ } else {
+
+ fail("Test directory is not a directory! \r The variable org.apache.tuscany.sca.cpp.tools.junit.TuscanyTestCase.root sets the location of the junit input data,\r it is currently set as "
+ + TuscanyTestCase.root + "\rand we expect to find a testinput\\composites directory under there.");
+ }
+
+ System.out.println("testAllComposites test passed.");
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestDeployAssistTool.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestDeployAssistTool.java
new file mode 100644
index 0000000000..0c5fad7429
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestDeployAssistTool.java
@@ -0,0 +1,96 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * This test case will test all the composites placed in the "composites" directory
+ * against the results in their repectice "expected_results" folders.
+ */
+public class TestDeployAssistTool extends TuscanyTestCase {
+
+ String testsDir = TuscanyTestCase.junit_composites;
+
+ Set excludes = new HashSet();
+
+ public TestDeployAssistTool(String arg0) {
+ super(arg0);
+ excludes.add("MyValueServiceCompositeMissingScaComposite");
+ excludes.add("CVS");
+ }
+
+ /* main exists to allow running from the test script which will
+ * wrap this test case and pipe the satandard output to somewhere
+ * for checking.
+ */
+
+ public static void main(String[] args) {
+ TestDeployAssistTool test = new TestDeployAssistTool("");
+ test.testDeployToolNullParms();
+ }
+
+ public void testDeployTool() {
+ //Utils.setReportArtefacts(true);
+ TestAllCompositesTest t = new TestAllCompositesTest("");
+ File dir = new File(testsDir);
+
+ if (dir.isDirectory()) {
+ String[] test_composites = dir.list();
+
+ for (int i = 0; i < test_composites.length; i++) {
+ File test_composite = new File(testsDir, test_composites[i]);
+ String composite_name = null;
+ if (test_composite.isDirectory()) {
+ composite_name = test_composite.getName();
+ if (!excludes.contains(composite_name.intern())) {
+ t.testCompositeDeploy(composite_name, create_results, "c:\\colin", "cp");
+ }
+ }
+ System.out.println("");
+ }
+ }
+ }
+
+ public void testDeployToolNullParms() {
+ //Utils.setReportArtefacts(true);
+ TestAllCompositesTest t = new TestAllCompositesTest("");
+ File dir = new File(testsDir);
+
+ if (dir.isDirectory()) {
+ String[] test_composites = dir.list();
+
+ for (int i = 0; i < test_composites.length; i++) {
+ File test_composite = new File(testsDir, test_composites[i]);
+ String composite_name = null;
+ if (test_composite.isDirectory()) {
+ composite_name = test_composite.getName();
+ if (!excludes.contains(composite_name.intern())) {
+ t.testCompositeDeploy(composite_name, create_results, null, null);
+ }
+ }
+ System.out.println("");
+ }
+ }
+ }
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TuscanyTestCase.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TuscanyTestCase.java
new file mode 100644
index 0000000000..d531010419
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TuscanyTestCase.java
@@ -0,0 +1,340 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+package org.apache.tuscany.sca.cpp.tools.junit;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.cpp.tools.common.Options;
+import org.apache.tuscany.sca.cpp.tools.services.Scagen;
+
+/**
+ * A superclass for testcases that can be used to store common functions.
+ */
+public class TuscanyTestCase extends TestCase {
+
+ public static String root = "d:\\tuscany\\cpp\\sca\\tools\\scagen\\junit\\";
+
+ public static String junit_composites = root + "testinput\\composites\\";
+
+ public static String junit_output = root + "testoutput\\";
+
+ private String testcase = "TESTCASE NOT SET BY SUBCLASS";
+
+ String input = null;
+
+ String output = null;
+
+ /**
+ * Check the resulting files with the contents of the expected_results
+ * folder in the testComposite method
+ */
+ public final static boolean check_results = true;
+
+ /**
+ * Create test output but do not check it (useful for setting up new
+ * expected test output
+ */
+ public final static boolean create_results = false;
+
+ /**
+ *
+ */
+ public TuscanyTestCase() {
+ super();
+ }
+
+ /**
+ * @param arg0
+ */
+ public TuscanyTestCase(String arg0) {
+ super(arg0);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ /**
+ * Tests to see if two files are the same - this is just a scratch method at
+ * the moment that flags up testcase output files not matching expected
+ * results rather than needing to be a fully robust implementation and needs
+ * a little further work.
+ *
+ * @param file1
+ * the first file to compare
+ * @param file2
+ * the second file to compare
+ *
+ */
+ protected boolean areFilesEqual(String file1, String file2) {
+
+ try {
+ FileInputStream fis1 = new java.io.FileInputStream(file1);
+ FileInputStream fis2 = new java.io.FileInputStream(file2);
+
+ BufferedReader br1 = new BufferedReader(new InputStreamReader(fis1));
+ BufferedReader br2 = new BufferedReader(new InputStreamReader(fis2));
+
+ String line1 = br1.readLine();
+ String line2 = br2.readLine();
+ boolean moretodo = (line1 != null) && (line2 != null);
+
+ for (int line = 1; moretodo; line++) {
+
+ if (line1.equals(line2)) {
+
+ line1 = br1.readLine();
+ line2 = br2.readLine();
+
+ } else {
+
+ int l1i, l2i;
+
+ if ((l1i = line1.lastIndexOf("$Id")) > 0) {
+ //allow CVS strings
+ line1 = br1.readLine();
+ }
+
+ if ((l2i = line2.lastIndexOf("$Id")) > 0) {
+ //allow CVS strings
+ line2 = br2.readLine();
+ }
+
+ if (l1i == -1 && l2i == -1) {
+
+ // they don't match
+ System.out.println("file " + file1 + " and file "
+ + file2);
+ System.out.println(" don't match at line " + line);
+ System.out.println("1 is :" + line1);
+ System.out.println("2 is :" + line2);
+
+ return false;
+ }
+ }
+
+ moretodo = (line1 != null) && (line2 != null);
+ }
+
+ System.out.println("MATCH FOR: file " + file1 + " and file "
+ + file2);
+ return true;
+
+ } catch (Throwable t) {
+ t.printStackTrace();
+ return true;
+ }
+
+ }
+
+ /**
+ * @param outputDir
+ */
+ protected void clearDirButNotExpectedOutputSubDir(String outputDir) {
+ File dir = new File(outputDir);
+ if (dir.isDirectory()) {
+ String[] files = dir.list();
+ for (int i = 0; i < files.length; i++) {
+ File child = new File(dir, files[i]);
+ if (child.isDirectory()) {
+ if (!(child.getName().equals("expected_output") || child.getName().equals(".svn"))) {
+ clearDirButNotExpectedOutputSubDir(dir
+ .getAbsolutePath()
+ + File.separator + files[i]);
+ }
+ }
+ else
+ {
+ if( !child.delete() )
+ {
+ System.out.println("File "+outputDir+"/"+child.getName()+" could not be deleted");
+ }
+ }
+ }
+ }
+
+ }
+
+ public void testComposite(String composite, boolean check) {
+
+ Options.reset();
+ setTestcase(composite);
+ clearDirButNotExpectedOutputSubDir(output);
+
+ String[] commandLine = new String[] { "-dir", input, "-output", output };
+ try {
+ Scagen.main(commandLine);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ if (check) {
+ checkDirWithExpected(output);
+ }
+ }
+
+ public void testCompositeDeploy(String composite, boolean check,
+ String deployDir, String command) {
+
+ Options.reset();
+ setTestcase(composite);
+ clearDirButNotExpectedOutputSubDir(output);
+
+ String[] commandLine;
+ if (null == deployDir) {
+ commandLine = new String[] { "-dir", input, "-output",
+ output, "-deploy"};
+ } else {
+ commandLine = new String[] { "-dir", input, "-output",
+ output, "-deploy", deployDir, "-command", command };
+ }
+ try {
+ Scagen.main(commandLine);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ if (check) {
+ checkDirWithExpected(output);
+ }
+ }
+
+ /**
+ * @param outputDirName
+ */
+ private void checkDirWithExpected(String outputDirName) {
+
+ File actualDir = new File(outputDirName);
+ if (actualDir == null || !actualDir.isDirectory()) {
+ fail("result directory does not exist");
+ }
+
+ File expectedDir = new File(outputDirName + File.separator
+ + "expected_output");
+ if (expectedDir == null || !actualDir.isDirectory()) {
+ fail("can't check results as expected directory does not exist");
+ }
+
+ //Check every file in the expected output directory is present
+ //in the actual directory
+
+ String[] expectedFiles = expectedDir.list();
+
+ if (expectedFiles == null) {
+ fail("no expected results for " + expectedDir.getPath());
+ }
+ for (int i = 0; expectedFiles != null && i < expectedFiles.length; i++) {
+ File expectedFile = new File(expectedDir, expectedFiles[i]);
+ if (expectedFile.isDirectory()) {
+ // we can't check subdirectories yet
+ // and it conveniently skips over "CVS"
+ } else {
+ File actualFile = checkFileExistsFailIfNot(actualDir,
+ expectedFile.getName());
+ checkFileHasNoTabsAndEndsInNewline(actualDir, expectedFile
+ .getName());
+ if (!areFilesEqual(expectedFile.getAbsolutePath(), actualFile
+ .getAbsolutePath())) {
+ fail("odd output for " + expectedFile.getPath());
+ }
+
+ }
+
+ }
+
+ }
+
+ /**
+ * @param actualDir
+ * @param name
+ */
+ private File checkFileExistsFailIfNot(File dir, String name) {
+
+ File f = new File(dir, name);
+ if (f == null || !f.exists() || !f.isFile()) {
+ fail("Expected result file " + f + " does not exist");
+ }
+ return f;
+
+ }
+
+ /**
+ * @param actualDir
+ * @param name
+ */
+ private void checkFileHasNoTabsAndEndsInNewline(File dir, String name) {
+
+ try {
+ File f = new File(dir, name);
+ FileInputStream fis = new FileInputStream(f);
+ InputStreamReader isr = new InputStreamReader(fis);
+ Reader br = new BufferedReader(isr);
+ int ch, charBeforeMinusOne = -1;
+ while ((ch = br.read()) > -1) {
+ if (ch == '\t') {
+ fail("found tab in output " + f.getPath());
+ }
+ charBeforeMinusOne = ch;
+ }
+ //The last char must be newline;
+ if (charBeforeMinusOne != '\n') {
+ fail("last char in file is not a newline in " + "(char is:"
+ + ch + " " + dir.getName() + File.separator + name);
+ }
+
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("io exception in tab/newline checker for " + dir.getName()
+ + File.separator + name);
+ return;
+ }
+
+ }
+
+ /**
+ * @param testcase
+ * The testcase to set.
+ */
+ void setTestcase(String testcase) {
+ this.testcase = testcase;
+ input = TuscanyTestCase.junit_composites + testcase;
+ output = TuscanyTestCase.junit_output + testcase;
+ }
+
+ /**
+ * @return Returns the testcase.
+ */
+ String getTestcase() {
+ return testcase;
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go.cmd
new file mode 100644
index 0000000000..21a08cebb5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go.cmd
@@ -0,0 +1,20 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+rm -rf out
+java -jar scagen.jar -dir c:\workspaces\wid60-no-core\Hydra.sca.core\test\testSCASystem\packages\MyValueServiceComposite -output c:\hydra\out
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_dir_option.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_dir_option.cmd
new file mode 100644
index 0000000000..da8305031b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_dir_option.cmd
@@ -0,0 +1,19 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+java -jar scagen.jar -dirX c:\workspaces\wid60-no-core\Hydra.sca.core\test\testSCASystem\packages\MyValueServiceComposite -output c:\hydra\out
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_input_dir.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_input_dir.cmd
new file mode 100644
index 0000000000..79432708b2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_input_dir.cmd
@@ -0,0 +1,19 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+java -jar scagen.jar -dir x:\not_there -output c:\hydra\irrelevant
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_output_dir.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_output_dir.cmd
new file mode 100644
index 0000000000..302ccdb06a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_output_dir.cmd
@@ -0,0 +1,19 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+java -jar scagen.jar -dir c:\workspaces\wid60-no-core\Hydra.sca.core\test\testSCASystem\packages\MyValueServiceComposite -output r:\hydra\out
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/refresh-tools-jar.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/refresh-tools-jar.cmd
new file mode 100644
index 0000000000..2c67915811
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/scripts_for_standalone_testing/refresh-tools-jar.cmd
@@ -0,0 +1,19 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+copy c:\workspaces\wid60-no-core\Hydra.sca.tools\scagen.jar . \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/Calculator.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/Calculator.h
new file mode 100644
index 0000000000..99c4158d1a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/Calculator.h
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CALCULATOR_H
+#define CALCULATOR_H
+
+
+class Calculator {
+
+private:
+ virtual long add(long a, long b) = 0;
+public:
+
+ virtual long subtract(long a, long b) = 0;
+};
+
+
+#endif // CALCULATOR_H
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.componentType
new file mode 100644
index 0000000000..41bbb22bde
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.componentType
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+ <service name="CalculatorService">
+ <interface.cpp header="Calculator.h"/> <!-- Header is relative to the composite root -->
+ </service>
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.h
new file mode 100644
index 0000000000..3f97eacef2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CALCULATORIMPL_H
+#define CALCULATORIMPL_H
+
+#include "Calculator.h"
+
+class CalculatorImpl : public Calculator
+{
+public:
+ CalculatorImpl();
+ virtual ~CalculatorImpl();
+ virtual long add(long a, long b);
+ virtual long subtract(long a, long b);
+
+};
+
+#endif //
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/sca.composite
new file mode 100644
index 0000000000..04d3e8fbdb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/sca.composite
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9" name="Calculator">
+
+ <component name="Calculator">
+ <implementation.cpp dll="debug/Calculator.dll" header="CalculatorImpl.h"/>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorBack.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorBack.h
new file mode 100644
index 0000000000..bc14167841
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorBack.h
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CALCULATOR_H
+#define CALCULATOR_H
+
+
+class CalculatorBack {
+
+
+
+public:
+ virtual long subtractBack(long a, long b) = 0;
+ virtual long addBack(long a, long b) = 0;
+};
+
+
+#endif // CALCULATOR_H
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorForward.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorForward.h
new file mode 100644
index 0000000000..af140f9575
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorForward.h
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CALCULATOR_H
+#define CALCULATOR_H
+
+
+class CalculatorForward {
+
+public:
+
+ virtual long subtractForward(long a, long b) = 0;
+ virtual long addForward(long a, long b) = 0;
+};
+
+
+#endif // CALCULATOR_H
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/sca.composite
new file mode 100644
index 0000000000..d527d9c358
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/sca.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9" name="Calculator">
+
+ <component name="CalculatorForward">
+ <implementation.cpp header="subFolder/CalculatorForwardImpl.h"/>
+ </component>
+
+ <component name="CalculatorBack">
+ <implementation.cpp header="subFolder\CalculatorBackImpl.h"/>
+ </component>
+
+</composite>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.componentType
new file mode 100644
index 0000000000..9d226cd5dc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.componentType
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+ <service name="CalculatorService">
+ <interface.cpp header="otherSubFolder\CalculatorBack.h"/> <!-- Header is relative to the composite root -->
+ </service>
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.h
new file mode 100644
index 0000000000..d10bfb4b1a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CALCULATORIMPL_H
+#define CALCULATORIMPL_H
+
+#include "Calculator.h"
+
+class CalculatorBackImpl : public Calculator
+{
+public:
+ CalculatorImpl();
+ virtual ~CalculatorImpl();
+ virtual long addBack(long a, long b);
+ virtual long subtractBack(long a, long b);
+
+};
+
+#endif //
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.componentType
new file mode 100644
index 0000000000..d717e8636e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.componentType
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+ <service name="CalculatorService">
+ <interface.cpp header="otherSubFolder/CalculatorForward.h"/> <!-- Header is relative to the composite root -->
+ </service>
+</componentType> \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.h
new file mode 100644
index 0000000000..182d9d89f2
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CALCULATORIMPL_H
+#define CALCULATORIMPL_H
+
+#include "Calculator.h"
+
+class CalculatorForwardImpl : public Calculator
+{
+public:
+ CalculatorImpl();
+ virtual ~CalculatorImpl();
+ virtual long addForward(long a, long b);
+ virtual long subtractForward(long a, long b);
+
+};
+
+#endif //
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.fragment
new file mode 100644
index 0000000000..733b4700e7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.fragment
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo.dll" class="CustomerInfoImpl" header="CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.h
new file mode 100644
index 0000000000..d1a634999c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.h
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+//char (simple extra type)
+ virtual const char* getCustomerInformationChar(char * p1, const char* customerID ) = 0;
+ virtual const char* getCustomerInfoAChar(char * p1,const char*) = 0;
+ virtual const char* getCustomerInfoBChar(char * p1, char* customerID ) = 0;
+ virtual const char* getCustomerInfoCChar(char * p1, char customerID ) = 0;
+ virtual const char* getCustomerInfoDChar(char * p1,char) = 0;
+ virtual const char* getCustomerInfoEChar(char * p1 , char *) = 0;
+ virtual const char* getCustomerInfoFChar(char * p1, char * p1, char *customerID ) = 0;
+ virtual const char* getCustomerInfoGChar(char * p1, char *, char * p1,signed char *customerID ) = 0;
+ virtual const char* getCustomerInfoHChar(unsigned char *customerID, const char, ) = 0;
+ virtual const char* getCustomerInfoHChar(unsigned char *customerID, const char*) = 0;
+
+//long (duplicate the types)
+ virtual const long* getCustomerInformationLong(const long* customerID, const long* customerID ) = 0;
+ virtual const long* getCustomerInfoALong(const long*,const long*) = 0;
+ virtual const long* getCustomerInfoBLong(long* customerID, long* customerID2 ) = 0;
+ virtual const long* getCustomerInfoCLong(long customerID , long customerID2 ) = 0;
+ virtual const long* getCustomerInfoDLong(long,long) = 0;
+ virtual const long* getCustomerInfoELong(long *, long*) = 0;
+ virtual const long* getCustomerInfoFLong(long *customerID, long* customerID2 ) = 0;
+ virtual const long* getCustomerInfoGLong(signed long *customerID, signed long *customerID2 ) = 0;
+ virtual const long* getCustomerInfoHLong(signed long *customerID, signed long *customerID2 ) = 0;
+
+//int
+ virtual const int* getCustomerInformationInt(char*, const int* customerID ) = 0;
+ virtual const int* getCustomerInfoAInt(char*,const int*) = 0;
+ virtual const int* getCustomerInfoBInt(char*,int* customerID ) = 0;
+ virtual const int* getCustomerInfoCInt(char*,int customerID ) = 0;
+ virtual const int* getCustomerInfoDInt(char*,int) = 0;
+ virtual const int* getCustomerInfoEInt(char*,int *) = 0;
+ virtual const int* getCustomerInfoFInt(char*,int *customerID ) = 0;
+ virtual const int* getCustomerInfoGInt(char*,signed int *customerID ) = 0;
+ virtual const int* getCustomerInfoHInt(char*,unsigned int *customerID ) = 0;
+
+
+//__int64
+ virtual const __int64* getCustomerInformationint64(Diamond&,const __int64* customerID ) = 0;
+ virtual const __int64* getCustomerInfoAint64(Diamond&, const __int64*) = 0;
+ virtual const __int64* getCustomerInfoBint64( Diamond&, __int64* customerID ) = 0;
+ virtual const __int64* getCustomerInfoCint64(Diamond&,__int64 customerID ) = 0;
+ virtual const __int64* getCustomerInfoDint64(Diamond& myDiamond,__int64) = 0;
+ virtual const __int64* getCustomerInfoEint64(Diamond& myDiamond, __int64 *) = 0;
+ virtual const __int64* getCustomerInfoFint64(Diamond& myDiamond, __int64 *customerID ) = 0;
+ virtual const __int64* getCustomerInfoGint64(Diamond& myDiamond, signed __int64 *customerID ) = 0;
+ virtual const __int64* getCustomerInfoHint64(const Diamond& myDiamond, unsigned int64 *customerID ) = 0;
+
+//void
+ virtual const void* getCustomerInformationVoid(float& f, const __int64* customerID ) = 0;
+ virtual void getCustomerInfoAVoid(const float& f, const __int64*) = 0;
+ virtual void getCustomerInfoBVoid( ) = 0;
+ virtual void getCustomerInfoCVoid() = 0;
+ virtual void getCustomerInfoDVoid(void) = 0;
+ virtual char getCustomerInfoEVoid(void) = 0;
+ virtual char getCustomerInfoFVoid() = 0;
+ virtual char getCustomerInfoGVoid( void ) = 0;
+
+//inline
+ virtual inline const char * getCustomerInfoAInline(int,int,int,int, char* customer id) = 0;
+ inline int getCustomerInfoBInline(int*,int* f, int* g, char* customer id) = 0;
+ virtual inline friend const unsigned int * getCustomerInfoCInline(char* customer id) = 0;
+
+//tricky examples
+ int getCustomerInfoTrickyA(const char, const char) = 0;
+ int getCustomerInfoTrickyB(int myInt, int myInt) = 0;
+
+
+
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.componentType
new file mode 100644
index 0000000000..bb81f4d66b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.h
new file mode 100644
index 0000000000..c325a90b1e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.fragment
new file mode 100644
index 0000000000..cb63dd1f06
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.fragment
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo" class="CustomerInfoImpl" header="CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.h
new file mode 100644
index 0000000000..85fac59da8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.h
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+//char
+ virtual const char* getCustomerInformationChar(const char* customerID ) = 0;
+ virtual const char* getCustomerInfoAChar(const char*) = 0;
+ virtual const char* getCustomerInfoBChar(char* customerID ) = 0;
+ virtual const char* getCustomerInfoCChar(char customerID ) = 0;
+ virtual const char* getCustomerInfoDChar(char) = 0;
+ virtual const char* getCustomerInfoEChar(char *) = 0;
+ virtual const char* getCustomerInfoFChar(char *customerID ) = 0;
+ virtual const char* getCustomerInfoGChar(signed char *customerID ) = 0;
+ virtual const char* getCustomerInfoHChar(unsigned char *customerID ) = 0;
+
+//long
+ virtual const long* getCustomerInformationLong(const long* customerID ) = 0;
+ virtual const long* getCustomerInfoALong(const long*) = 0;
+ virtual const long* getCustomerInfoBLong(long* customerID ) = 0;
+ virtual const long* getCustomerInfoCLong(long customerID ) = 0;
+ virtual const long* getCustomerInfoDLong(long) = 0;
+ virtual const long* getCustomerInfoELong(long *) = 0;
+ virtual const long* getCustomerInfoFLong(long *customerID ) = 0;
+ virtual const long* getCustomerInfoGLong(signed long *customerID ) = 0;
+ virtual const long* getCustomerInfoHLong(unsigned long *customerID ) = 0;
+
+//int
+ virtual const int* getCustomerInformationInt(const int* customerID ) = 0;
+ virtual const int* getCustomerInfoAInt(const int*) = 0;
+ virtual const int* getCustomerInfoBInt(int* customerID ) = 0;
+ virtual const int* getCustomerInfoCInt(int customerID ) = 0;
+ virtual const int* getCustomerInfoDInt(int) = 0;
+ virtual const int* getCustomerInfoEInt(int *) = 0;
+ virtual const int* getCustomerInfoFInt(int *customerID ) = 0;
+ virtual const int* getCustomerInfoGInt(signed int *customerID ) = 0;
+ virtual const int* getCustomerInfoHInt(unsigned int *customerID ) = 0;
+
+
+//__int64
+ virtual const __int64* getCustomerInformationint64(const __int64* customerID ) = 0;
+ virtual const __int64* getCustomerInfoAint64(const __int64*) = 0;
+ virtual const __int64* getCustomerInfoBint64(__int64* customerID ) = 0;
+ virtual const __int64* getCustomerInfoCint64(__int64 customerID ) = 0;
+ virtual const __int64* getCustomerInfoDint64(__int64) = 0;
+ virtual const __int64* getCustomerInfoEint64(__int64 *) = 0;
+ virtual const __int64* getCustomerInfoFint64(__int64 *customerID ) = 0;
+ virtual const __int64* getCustomerInfoGint64(signed __int64 *customerID ) = 0;
+ virtual const __int64* getCustomerInfoHint64(unsigned int64 *customerID ) = 0;
+
+//void
+ virtual const void* getCustomerInformationVoid(const __int64* customerID ) = 0;
+ virtual void getCustomerInfoAVoid(const __int64*) = 0;
+ virtual void getCustomerInfoBVoid( ) = 0;
+ virtual void getCustomerInfoCVoid() = 0;
+ virtual void getCustomerInfoDVoid(void) = 0;
+
+//inline
+ virtual inline const char * getCustomerInfoAInline(char* customer id) = 0;
+ inline int getCustomerInfoBInline(char* customer id) = 0;
+ virtual inline friend const unsigned int * getCustomerInfoCInline(char* customer id) = 0;
+
+//tricky examples
+ int getCustomerInfoTrickyA(const char) = 0;
+ int getCustomerInfoTrickyB(int myInt) = 0;
+
+
+
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.componentType
new file mode 100644
index 0000000000..bb81f4d66b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.h
new file mode 100644
index 0000000000..95b70c3017
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.h
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+class CustomerInfoImpl2 : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation2(const char* customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.fragment
new file mode 100644
index 0000000000..5c5cb78b87
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.fragment
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo" class="CustomerInfoImpl2" header="CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.h
new file mode 100644
index 0000000000..7bd355b3ab
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.h
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+ virtual const char* getCustomerInformation(const char* customerID) = 0;
+
+};
+
+
+class CustomerInfoSecond
+{
+public:
+ virtual const char* getCustomerInformationSecond(const char* customerID) = 0;
+
+};
+
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.componentType
new file mode 100644
index 0000000000..bb81f4d66b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.h
new file mode 100644
index 0000000000..540873174b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.h
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+class CustomerInfoImpl2 : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation2(const char* customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValue.h
new file mode 100644
index 0000000000..4334c82eca
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValue.h
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+class MyValue
+{
+public:
+ virtual float getMyValue(const char* customerID) = 0;
+ virtual float getMyValueS(const string& customerID) = 0;
+ virtual string getCustname(string& customerID) = 0;
+ virtual const string& getCustnamecs(string customerID) = 0;
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.componentType
new file mode 100644
index 0000000000..b83a65be8c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.componentType
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp class="MyValue" header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+ <reference name="customerInfo">
+ <interface.cpp header="CustomerInfo.h">
+ </interface.cpp>
+ </reference>
+
+ <reference name="stockQuote">
+ <interface.cpp header="StockQuoteService.h">
+ </interface.cpp>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.hpp
new file mode 100644
index 0000000000..98a342fcb0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.hpp
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+
+class MyValueImpl : public MyValue
+{
+public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl_stockQuote_Proxy.h
new file mode 100644
index 0000000000..3f9feeed30
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl_stockQuote_Proxy.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef MyValueImpl_stockQuote_Proxy_h
+#define MyValueImpl_stockQuote_Proxy_h
+
+#include "StockQuoteService.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_stockQuote_Proxy : public StockQuoteService
+{
+public:
+ MyValueImpl_stockQuote_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_stockQuote_Proxy();
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_stockQuote_Proxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/StockQuoteService.h
new file mode 100644
index 0000000000..6a8fd51534
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/StockQuoteService.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef StockQuoteService_h
+#define StockQuoteService_h
+#include <string>
+#include "commonj/sdo/sdo.h"
+using std::string;
+class StockQuoteService
+{
+public:
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr request) = 0;
+
+};
+
+#endif // StockQuoteService_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/sca.composite
new file mode 100644
index 0000000000..42c50da77f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/sca.composite
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--
+ <component name="Calculator">
+ <implementation.cpp dll="debug/Calculator.dll" header="CalculatorImpl.h"/>
+ </component>
+ -->
+
+ <externalService name="StockQuoteService">
+ <interface.cpp header="StockQuoteService.h"/>
+ <binding.ws port="http://swanandmokashi.com#wsdl.endpoint(StockQuotes/StockQuotesSoap)"/>
+ </externalService>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.fragment
new file mode 100644
index 0000000000..48d34f7957
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.fragment
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo" class="Other::CustomerInfoImpl" header="CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.h
new file mode 100644
index 0000000000..928480df1f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+ virtual const char* getCustomerInformation(const char* customerID) = 0;
+
+};
+
+
+class CustomerInfoSecond
+{
+public:
+ virtual const char* getCustomerInformationSecond(const char* customerID) = 0;
+
+};
+
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.componentType
new file mode 100644
index 0000000000..bb81f4d66b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.h
new file mode 100644
index 0000000000..8d2f810db0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.h
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+/*
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+*/
+namespace Other {
+ class CustomerInfoImpl : public CustomerInfo
+ {
+ public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformationOther(const char* customerID);
+
+ };
+}
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValue.h
new file mode 100644
index 0000000000..4334c82eca
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValue.h
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+class MyValue
+{
+public:
+ virtual float getMyValue(const char* customerID) = 0;
+ virtual float getMyValueS(const string& customerID) = 0;
+ virtual string getCustname(string& customerID) = 0;
+ virtual const string& getCustnamecs(string customerID) = 0;
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.componentType
new file mode 100644
index 0000000000..b83a65be8c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.componentType
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp class="MyValue" header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+ <reference name="customerInfo">
+ <interface.cpp header="CustomerInfo.h">
+ </interface.cpp>
+ </reference>
+
+ <reference name="stockQuote">
+ <interface.cpp header="StockQuoteService.h">
+ </interface.cpp>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.hpp
new file mode 100644
index 0000000000..98a342fcb0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.hpp
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+
+class MyValueImpl : public MyValue
+{
+public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl_stockQuote_Proxy.h
new file mode 100644
index 0000000000..3f9feeed30
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl_stockQuote_Proxy.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef MyValueImpl_stockQuote_Proxy_h
+#define MyValueImpl_stockQuote_Proxy_h
+
+#include "StockQuoteService.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_stockQuote_Proxy : public StockQuoteService
+{
+public:
+ MyValueImpl_stockQuote_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_stockQuote_Proxy();
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_stockQuote_Proxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/StockQuoteService.h
new file mode 100644
index 0000000000..6a8fd51534
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/StockQuoteService.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef StockQuoteService_h
+#define StockQuoteService_h
+#include <string>
+#include "commonj/sdo/sdo.h"
+using std::string;
+class StockQuoteService
+{
+public:
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr request) = 0;
+
+};
+
+#endif // StockQuoteService_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/sca.composite
new file mode 100644
index 0000000000..42c50da77f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/sca.composite
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--
+ <component name="Calculator">
+ <implementation.cpp dll="debug/Calculator.dll" header="CalculatorImpl.h"/>
+ </component>
+ -->
+
+ <externalService name="StockQuoteService">
+ <interface.cpp header="StockQuoteService.h"/>
+ <binding.ws port="http://swanandmokashi.com#wsdl.endpoint(StockQuotes/StockQuotesSoap)"/>
+ </externalService>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValue.h
new file mode 100644
index 0000000000..af7687892d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValue.h
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+
+class MyValue
+{
+ public:
+ virtual float getMyValueOther(const char* customerID) = 0;
+ virtual float getMyValueSOther(const string& customerID) = 0;
+ virtual string getCustnameOther(string& customerID) = 0;
+ virtual const string& getCustnamecsOther(string customerID) = 0;
+}
+
+#endif
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+
+class MyValue
+{
+ public:
+ virtual float getMyValueOther(const char* customerID) = 0;
+ virtual float getMyValueSOther(const string& customerID) = 0;
+ virtual string getCustnameOther(string& customerID) = 0;
+ virtual const string& getCustnamecsOther(string customerID) = 0;
+}
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType
new file mode 100644
index 0000000000..05e70d64f7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+</componentType>
+
+<!--
+/*
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+</componentType>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp
new file mode 100644
index 0000000000..d9c7823f4b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+namespace myvaluecorp
+{
+ namespace implns
+ {
+
+ class MyValueImpl : public MyValue
+ {
+ public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+ };
+ }
+}
+#endif
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+namespace myvaluecorp
+{
+ namespace implns
+ {
+
+ class MyValueImpl : public MyValue
+ {
+ public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+ };
+ }
+}
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/sca.composite
new file mode 100644
index 0000000000..2f1749a4a1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/sca.composite
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+
+<!--
+/*
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValue.h
new file mode 100644
index 0000000000..bbfcf15ed1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValue.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+
+namespace Other {
+ class MyValue
+ {
+ public:
+ virtual float getMyValueOther(const char* customerID) = 0;
+ virtual float getMyValueSOther(const string& customerID) = 0;
+ virtual string getCustnameOther(string& customerID) = 0;
+ virtual const string& getCustnamecsOther(string customerID) = 0;
+ }
+}
+
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.componentType
new file mode 100644
index 0000000000..f5921f4216
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.componentType
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp class="Other::MyValue" header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.hpp
new file mode 100644
index 0000000000..98a342fcb0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.hpp
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+
+class MyValueImpl : public MyValue
+{
+public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/sca.composite
new file mode 100644
index 0000000000..6171c47fba
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/sca.composite
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValue.h
new file mode 100644
index 0000000000..10c59480a8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValue.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+
+namespace Other {
+ class MyValue
+ {
+ public:
+ virtual float getMyValueOther(const char* customerID) = 0;
+ virtual float getMyValueSOther(const string& customerID) = 0;
+ virtual string getCustnameOther(string& customerID) = 0;
+ virtual const string& getCustnamecsOther(string customerID) = 0;
+ }
+}
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType
new file mode 100644
index 0000000000..be5bc060c5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp
new file mode 100644
index 0000000000..98a342fcb0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+
+class MyValueImpl : public MyValue
+{
+public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/sca.composite
new file mode 100644
index 0000000000..6171c47fba
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/sca.composite
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/CustomerInfo.fragmentX b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/CustomerInfo.fragmentX
new file mode 100644
index 0000000000..717ce02ede
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/CustomerInfo.fragmentX
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo" class="CustomerInfoImpl2" header="CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/sca.compositeX b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/sca.compositeX
new file mode 100644
index 0000000000..bbda577c28
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/sca.compositeX
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--
+ <component name="Calculator">
+ <implementation.cpp dll="debug/Calculator.dll" header="CalculatorImpl.h"/>
+ </component>
+ -->
+
+ <externalService name="StockQuoteService">
+ <interface.cpp header="StockQuoteService.h"/>
+ <binding.ws port="http://swanandmokashi.com#wsdl.endpoint(StockQuotes/StockQuotesSoap)"/>
+ </externalService>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.fragment
new file mode 100644
index 0000000000..5c5cb78b87
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.fragment
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo" class="CustomerInfoImpl2" header="CustomerInfoImpl.h"></implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.h
new file mode 100644
index 0000000000..928480df1f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+ virtual const char* getCustomerInformation(const char* customerID) = 0;
+
+};
+
+
+class CustomerInfoSecond
+{
+public:
+ virtual const char* getCustomerInformationSecond(const char* customerID) = 0;
+
+};
+
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.componentType
new file mode 100644
index 0000000000..bb81f4d66b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.h
new file mode 100644
index 0000000000..c275383ab4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.h
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+class CustomerInfoImpl2 : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValue.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValue.h
new file mode 100644
index 0000000000..4334c82eca
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValue.h
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// MyValue.h: interface for the MyValueImpl class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef MyValue_h
+#define MyValue_h
+#include <string>
+using std::string;
+class MyValue
+{
+public:
+ virtual float getMyValue(const char* customerID) = 0;
+ virtual float getMyValueS(const string& customerID) = 0;
+ virtual string getCustname(string& customerID) = 0;
+ virtual const string& getCustnamecs(string customerID) = 0;
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.componentType
new file mode 100644
index 0000000000..b83a65be8c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.componentType
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
+
+ <service name="MyValueService">
+ <interface.cpp class="MyValue" header="MyValue.h">
+ </interface.cpp>
+ </service>
+
+ <reference name="customerInfo">
+ <interface.cpp header="CustomerInfo.h">
+ </interface.cpp>
+ </reference>
+
+ <reference name="stockQuote">
+ <interface.cpp header="StockQuoteService.h">
+ </interface.cpp>
+ </reference>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.hpp
new file mode 100644
index 0000000000..98a342fcb0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.hpp
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef MyValueImpl_h
+#define MyValueImpl_h
+
+#include "MyValue.h"
+
+
+
+class MyValueImpl : public MyValue
+{
+public:
+ MyValueImpl();
+ virtual ~MyValueImpl();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname(string& customerID);
+ virtual const string& getCustnamecs(string customerID);
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl_stockQuote_Proxy.h
new file mode 100644
index 0000000000..3f9feeed30
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl_stockQuote_Proxy.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef MyValueImpl_stockQuote_Proxy_h
+#define MyValueImpl_stockQuote_Proxy_h
+
+#include "StockQuoteService.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_stockQuote_Proxy : public StockQuoteService
+{
+public:
+ MyValueImpl_stockQuote_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_stockQuote_Proxy();
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_stockQuote_Proxy_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/StockQuoteService.h
new file mode 100644
index 0000000000..6a8fd51534
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/StockQuoteService.h
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef StockQuoteService_h
+#define StockQuoteService_h
+#include <string>
+#include "commonj/sdo/sdo.h"
+using std::string;
+class StockQuoteService
+{
+public:
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes(commonj::sdo::DataObjectPtr request) = 0;
+
+};
+
+#endif // StockQuoteService_h
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/sca.composite b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/sca.composite
new file mode 100644
index 0000000000..42c50da77f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/sca.composite
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="MyValueServiceComposite">
+
+ <!-- Expose as a web service -->
+ <entryPoint name="MyValueServiceExport" multiplicity="1..1">
+ <interface.wsdl interface="" callbackInterface=""></interface.wsdl>
+ <binding.ws port="mvs:MyValueServiceSOAP"></binding.ws>
+ <reference>MyValueServiceComponent</reference>
+ </entryPoint>
+
+ <component name="MyValueServiceComponent">
+ <implementation.cpp dll="MyValue" header="MyValueImpl.hpp"></implementation.cpp>
+ <properties>
+ </properties>
+ <references>
+ <customerInfo>CustomerInfoComponent</customerInfo>
+ <stockQuote>StockQuoteService</stockQuote>
+ </references>
+ </component>
+
+ <!--
+ <component name="Calculator">
+ <implementation.cpp dll="debug/Calculator.dll" header="CalculatorImpl.h"/>
+ </component>
+ -->
+
+ <externalService name="StockQuoteService">
+ <interface.cpp header="StockQuoteService.h"/>
+ <binding.ws port="http://swanandmokashi.com#wsdl.endpoint(StockQuotes/StockQuotesSoap)"/>
+ </externalService>
+
+ <!--wire>
+ <source.uri>MyValueServiceComponent/customerInfo</source.uri>
+ <target.uri>CustomerInfoComponent</target.uri>
+ </wire-->
+
+</composite>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.fragment
new file mode 100644
index 0000000000..27d28368f5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.fragment
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<compositeFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:mvs="http://www.myvalue.org/MyValueService/"
+ name="CustomerInfoComponent">
+
+
+ <component name="CustomerInfoComponent">
+ <implementation.cpp dll="CustomerInfo" header="CustomerInfoImpl.h">
+ </implementation.cpp>
+ <properties>
+ <v:Fred>x</v:Fred>
+ <v:Joe>23</v:Joe>
+ <Joe>42</Joe>
+ </properties>
+ <references>
+ </references>
+ </component>
+
+</compositeFragment>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.h
new file mode 100644
index 0000000000..32bf7572dc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.h
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef CustomerInfo_h
+#define CustomerInfo_h
+
+class CustomerInfo
+{
+public:
+ virtual const char* getCustomerInformationCharPublic(char * p1, const char* customerID ) = 0;
+ virtual const char* getCustomerInfoACharPublic(char * p1,const char*) = 0;
+ virtual const char* getCustomerInfoBCharPublic(char * p1, char* customerID ) = 0;
+
+private:
+ virtual const char* getCustomerInformationCharPrivate(char * p1, const char* customerID ) = 0;
+ virtual const char* getCustomerInfoACharPrivate(char * p1,const char*) = 0;
+ virtual const char* getCustomerInfoBCharPrivate(char * p1, char* customerID ) = 0;
+
+protected:
+ virtual const char* getCustomerInformationCharProtected(char * p1, const char* customerID ) = 0;
+ virtual const char* getCustomerInfoACharProtected(char * p1,const char*) = 0;
+ virtual const char* getCustomerInfoBCharProtected(char * p1, char* customerID ) = 0;
+
+
+};
+
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.componentType
new file mode 100644
index 0000000000..bb81f4d66b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.componentType
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <service name="CustomerInfoService">
+ <interface.cpp header="/CustomerInfo.h">
+ </interface.cpp>
+ </service>
+
+ <property name="Fred" type="xs:string"/>
+ <property name="Joe" type="xs:integer" many="true"/>
+
+</componentType>
+ \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.h
new file mode 100644
index 0000000000..55f5813303
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.h
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Rev$ $Date$ */
+
+// Class definition for the implementation
+
+#ifndef CustomerInfoImpl_h
+#define CustomerInfoImpl_h
+
+#include "CustomerInfo.h"
+
+
+
+class CustomerInfoImpl : public CustomerInfo
+{
+public:
+ CustomerInfoImpl();
+ virtual ~CustomerInfoImpl();
+ virtual const char* getCustomerInformation(const char* customerID);
+
+};
+#endif
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.cpp
new file mode 100644
index 0000000000..290124a2d7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.cpp
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CalculatorImpl_CalculatorService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CalculatorImpl_CalculatorService_Proxy* CalculatorImpl_CalculatorService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CalculatorImpl_CalculatorService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CalculatorImpl_CalculatorService_Proxy_Destructor(void* proxy)
+ {
+ delete (CalculatorImpl_CalculatorService_Proxy*)proxy;
+ }
+}
+
+CalculatorImpl_CalculatorService_Proxy::CalculatorImpl_CalculatorService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CalculatorImpl_CalculatorService_Proxy::~CalculatorImpl_CalculatorService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+long CalculatorImpl_CalculatorService_Proxy::subtract( long arg0, long arg1)
+{
+ Operation operation("subtract");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ long ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.h
new file mode 100644
index 0000000000..00b163ba76
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CalculatorImpl_CalculatorService_Proxy_h
+#define CalculatorImpl_CalculatorService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "Calculator.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CalculatorImpl_CalculatorService_Proxy : public Calculator
+{
+public:
+ CalculatorImpl_CalculatorService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CalculatorImpl_CalculatorService_Proxy();
+ virtual long subtract( long a, long b);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CalculatorImpl_CalculatorService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.cpp
new file mode 100644
index 0000000000..ceb34034e3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.cpp
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CalculatorImpl_CalculatorService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CalculatorImpl_CalculatorService_Wrapper* CalculatorImpl_CalculatorService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CalculatorImpl_CalculatorService_Wrapper(target);
+ }
+}
+
+CalculatorImpl_CalculatorService_Wrapper::CalculatorImpl_CalculatorService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CalculatorImpl*)getImplementation();
+}
+
+CalculatorImpl_CalculatorService_Wrapper::~CalculatorImpl_CalculatorService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CalculatorImpl_CalculatorService_Wrapper::newImplementation()
+{
+ return new CalculatorImpl;
+}
+
+void CalculatorImpl_CalculatorService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CalculatorImpl_CalculatorService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "subtract")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(long*)operation.getReturnValue() = impl->subtract(p0, p1);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.h
new file mode 100644
index 0000000000..63bae2f75c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CalculatorImpl_CalculatorService_Wrapper_h
+#define CalculatorImpl_CalculatorService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CalculatorImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CalculatorImpl_CalculatorService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CalculatorImpl_CalculatorService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CalculatorImpl_CalculatorService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CalculatorImpl* impl;
+};
+
+#endif // CalculatorImpl_CalculatorService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.cpp
new file mode 100644
index 0000000000..19725c6fff
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.cpp
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CalculatorBackImpl_CalculatorService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CalculatorBackImpl_CalculatorService_Proxy* CalculatorBackImpl_CalculatorService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CalculatorBackImpl_CalculatorService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CalculatorBackImpl_CalculatorService_Proxy_Destructor(void* proxy)
+ {
+ delete (CalculatorBackImpl_CalculatorService_Proxy*)proxy;
+ }
+}
+
+CalculatorBackImpl_CalculatorService_Proxy::CalculatorBackImpl_CalculatorService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CalculatorBackImpl_CalculatorService_Proxy::~CalculatorBackImpl_CalculatorService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+long CalculatorBackImpl_CalculatorService_Proxy::subtractBack( long arg0, long arg1)
+{
+ Operation operation("subtractBack");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ long ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+long CalculatorBackImpl_CalculatorService_Proxy::addBack( long arg0, long arg1)
+{
+ Operation operation("addBack");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ long ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.h
new file mode 100644
index 0000000000..277a3afb06
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.h
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CalculatorBackImpl_CalculatorService_Proxy_h
+#define CalculatorBackImpl_CalculatorService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "otherSubFolder/CalculatorBack.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CalculatorBackImpl_CalculatorService_Proxy : public CalculatorBack
+{
+public:
+ CalculatorBackImpl_CalculatorService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CalculatorBackImpl_CalculatorService_Proxy();
+ virtual long subtractBack( long a, long b);
+ virtual long addBack( long a, long b);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CalculatorBackImpl_CalculatorService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.cpp
new file mode 100644
index 0000000000..648fa5c8cb
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.cpp
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CalculatorBackImpl_CalculatorService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CalculatorBackImpl_CalculatorService_Wrapper* CalculatorBackImpl_CalculatorService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CalculatorBackImpl_CalculatorService_Wrapper(target);
+ }
+}
+
+CalculatorBackImpl_CalculatorService_Wrapper::CalculatorBackImpl_CalculatorService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CalculatorBackImpl*)getImplementation();
+}
+
+CalculatorBackImpl_CalculatorService_Wrapper::~CalculatorBackImpl_CalculatorService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CalculatorBackImpl_CalculatorService_Wrapper::newImplementation()
+{
+ return new CalculatorBackImpl;
+}
+
+void CalculatorBackImpl_CalculatorService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CalculatorBackImpl_CalculatorService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "subtractBack")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(long*)operation.getReturnValue() = impl->subtractBack(p0, p1);
+ return;
+ }
+ if (operationName == "addBack")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(long*)operation.getReturnValue() = impl->addBack(p0, p1);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.h
new file mode 100644
index 0000000000..bfa203598c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CalculatorBackImpl_CalculatorService_Wrapper_h
+#define CalculatorBackImpl_CalculatorService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "subFolder/CalculatorBackImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CalculatorBackImpl_CalculatorService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CalculatorBackImpl_CalculatorService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CalculatorBackImpl_CalculatorService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CalculatorBackImpl* impl;
+};
+
+#endif // CalculatorBackImpl_CalculatorService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.cpp
new file mode 100644
index 0000000000..3f2b560cbc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.cpp
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CalculatorForwardImpl_CalculatorService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CalculatorForwardImpl_CalculatorService_Proxy* CalculatorForwardImpl_CalculatorService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CalculatorForwardImpl_CalculatorService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CalculatorForwardImpl_CalculatorService_Proxy_Destructor(void* proxy)
+ {
+ delete (CalculatorForwardImpl_CalculatorService_Proxy*)proxy;
+ }
+}
+
+CalculatorForwardImpl_CalculatorService_Proxy::CalculatorForwardImpl_CalculatorService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CalculatorForwardImpl_CalculatorService_Proxy::~CalculatorForwardImpl_CalculatorService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+long CalculatorForwardImpl_CalculatorService_Proxy::subtractForward( long arg0, long arg1)
+{
+ Operation operation("subtractForward");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ long ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+long CalculatorForwardImpl_CalculatorService_Proxy::addForward( long arg0, long arg1)
+{
+ Operation operation("addForward");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ long ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.h
new file mode 100644
index 0000000000..9213ec625b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.h
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CalculatorForwardImpl_CalculatorService_Proxy_h
+#define CalculatorForwardImpl_CalculatorService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "otherSubFolder/CalculatorForward.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CalculatorForwardImpl_CalculatorService_Proxy : public CalculatorForward
+{
+public:
+ CalculatorForwardImpl_CalculatorService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CalculatorForwardImpl_CalculatorService_Proxy();
+ virtual long subtractForward( long a, long b);
+ virtual long addForward( long a, long b);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CalculatorForwardImpl_CalculatorService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.cpp
new file mode 100644
index 0000000000..4f5ab80728
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.cpp
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CalculatorForwardImpl_CalculatorService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CalculatorForwardImpl_CalculatorService_Wrapper* CalculatorForwardImpl_CalculatorService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CalculatorForwardImpl_CalculatorService_Wrapper(target);
+ }
+}
+
+CalculatorForwardImpl_CalculatorService_Wrapper::CalculatorForwardImpl_CalculatorService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CalculatorForwardImpl*)getImplementation();
+}
+
+CalculatorForwardImpl_CalculatorService_Wrapper::~CalculatorForwardImpl_CalculatorService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CalculatorForwardImpl_CalculatorService_Wrapper::newImplementation()
+{
+ return new CalculatorForwardImpl;
+}
+
+void CalculatorForwardImpl_CalculatorService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CalculatorForwardImpl_CalculatorService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "subtractForward")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(long*)operation.getReturnValue() = impl->subtractForward(p0, p1);
+ return;
+ }
+ if (operationName == "addForward")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(long*)operation.getReturnValue() = impl->addForward(p0, p1);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.h
new file mode 100644
index 0000000000..0cb8404ca3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CalculatorForwardImpl_CalculatorService_Wrapper_h
+#define CalculatorForwardImpl_CalculatorService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "subFolder/CalculatorForwardImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CalculatorForwardImpl_CalculatorService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CalculatorForwardImpl_CalculatorService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CalculatorForwardImpl_CalculatorService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CalculatorForwardImpl* impl;
+};
+
+#endif // CalculatorForwardImpl_CalculatorService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
new file mode 100644
index 0000000000..f1bb7cafaf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
@@ -0,0 +1,596 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Proxy* CustomerInfoImpl_CustomerInfoService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CustomerInfoImpl_CustomerInfoService_Proxy_Destructor(void* proxy)
+ {
+ delete (CustomerInfoImpl_CustomerInfoService_Proxy*)proxy;
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::CustomerInfoImpl_CustomerInfoService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::~CustomerInfoImpl_CustomerInfoService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationChar( char* arg0, const char* arg1)
+{
+ Operation operation("getCustomerInformationChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAChar( char* arg0, const char* arg1)
+{
+ Operation operation("getCustomerInfoAChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBChar( char* arg0, char* arg1)
+{
+ Operation operation("getCustomerInfoBChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCChar( char* arg0, char arg1)
+{
+ Operation operation("getCustomerInfoCChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDChar( char* arg0, char arg1)
+{
+ Operation operation("getCustomerInfoDChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEChar( char* arg0, char* arg1)
+{
+ Operation operation("getCustomerInfoEChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFChar( char* arg0, char* arg1, char* arg2)
+{
+ Operation operation("getCustomerInfoFChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ operation.addParameter(&arg2);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGChar( char* arg0, char* arg1, char* arg2, signed char* arg3)
+{
+ Operation operation("getCustomerInfoGChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ operation.addParameter(&arg2);
+ operation.addParameter(&arg3);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHChar( unsigned char* arg0, const char arg1)
+{
+ Operation operation("getCustomerInfoHChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHChar( unsigned char* arg0, const char* arg1)
+{
+ Operation operation("getCustomerInfoHChar");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationLong(const long* arg0, const long* arg1)
+{
+ Operation operation("getCustomerInformationLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoALong(const long* arg0, const long* arg1)
+{
+ Operation operation("getCustomerInfoALong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBLong( long* arg0, long* arg1)
+{
+ Operation operation("getCustomerInfoBLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCLong( long arg0, long arg1)
+{
+ Operation operation("getCustomerInfoCLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDLong( long arg0, long arg1)
+{
+ Operation operation("getCustomerInfoDLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoELong( long* arg0, long* arg1)
+{
+ Operation operation("getCustomerInfoELong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFLong( long* arg0, long* arg1)
+{
+ Operation operation("getCustomerInfoFLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGLong( signed long* arg0, signed long* arg1)
+{
+ Operation operation("getCustomerInfoGLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHLong( signed long* arg0, signed long* arg1)
+{
+ Operation operation("getCustomerInfoHLong");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationInt( char* arg0, const int* arg1)
+{
+ Operation operation("getCustomerInformationInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAInt( char* arg0, const int* arg1)
+{
+ Operation operation("getCustomerInfoAInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBInt( char* arg0, int* arg1)
+{
+ Operation operation("getCustomerInfoBInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCInt( char* arg0, int arg1)
+{
+ Operation operation("getCustomerInfoCInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDInt( char* arg0, int arg1)
+{
+ Operation operation("getCustomerInfoDInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEInt( char* arg0, int* arg1)
+{
+ Operation operation("getCustomerInfoEInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFInt( char* arg0, int* arg1)
+{
+ Operation operation("getCustomerInfoFInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGInt( char* arg0, signed int* arg1)
+{
+ Operation operation("getCustomerInfoGInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHInt( char* arg0, unsigned int* arg1)
+{
+ Operation operation("getCustomerInfoHInt");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationint64( Diamond& arg0, const __int64* arg1)
+{
+ Operation operation("getCustomerInformationint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAint64( Diamond& arg0, const __int64* arg1)
+{
+ Operation operation("getCustomerInfoAint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBint64( Diamond& arg0, __int64* arg1)
+{
+ Operation operation("getCustomerInfoBint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCint64( Diamond& arg0, __int64 arg1)
+{
+ Operation operation("getCustomerInfoCint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDint64( Diamond& arg0, __int64 arg1)
+{
+ Operation operation("getCustomerInfoDint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEint64( Diamond& arg0, __int64* arg1)
+{
+ Operation operation("getCustomerInfoEint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFint64( Diamond& arg0, __int64* arg1)
+{
+ Operation operation("getCustomerInfoFint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGint64( Diamond& arg0, signed __int64* arg1)
+{
+ Operation operation("getCustomerInfoGint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHint64(const Diamond& arg0, unsigned int64* arg1)
+{
+ Operation operation("getCustomerInfoHint64");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const void* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationVoid( float& arg0, const __int64* arg1)
+{
+ Operation operation("getCustomerInformationVoid");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const void* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAVoid(const float& arg0, const __int64* arg1)
+{
+ Operation operation("getCustomerInfoAVoid");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ target->invoke(operation);
+ return;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBVoid()
+{
+ Operation operation("getCustomerInfoBVoid");
+ target->invoke(operation);
+ return;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCVoid()
+{
+ Operation operation("getCustomerInfoCVoid");
+ target->invoke(operation);
+ return;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDVoid()
+{
+ Operation operation("getCustomerInfoDVoid");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return;
+}
+
+char CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEVoid()
+{
+ Operation operation("getCustomerInfoEVoid");
+ operation.addParameter(&arg0);
+ char ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+char CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFVoid()
+{
+ Operation operation("getCustomerInfoFVoid");
+ char ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+char CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGVoid()
+{
+ Operation operation("getCustomerInfoGVoid");
+ operation.addParameter(&arg0);
+ char ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAInline( int arg0, int arg1, int arg2, int arg3, char* customer arg4)
+{
+ Operation operation("getCustomerInfoAInline");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ operation.addParameter(&arg2);
+ operation.addParameter(&arg3);
+ operation.addParameter(&arg4);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+int CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBInline( int* arg0, int* arg1, int* arg2, char* customer arg3)
+{
+ Operation operation("getCustomerInfoBInline");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ operation.addParameter(&arg2);
+ operation.addParameter(&arg3);
+ int ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+friend const unsigned int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCInline( char* customer arg0)
+{
+ Operation operation("getCustomerInfoCInline");
+ operation.addParameter(&arg0);
+ friend const unsigned int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+int CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoTrickyA(const char arg0, const char arg1)
+{
+ Operation operation("getCustomerInfoTrickyA");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ int ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+int CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoTrickyB( int arg0, int arg1)
+{
+ Operation operation("getCustomerInfoTrickyB");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ int ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
new file mode 100644
index 0000000000..cb9e4e6e2a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Proxy_h
+#define CustomerInfoImpl_CustomerInfoService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "/CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Proxy : public CustomerInfo
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformationChar( char* p1, const char* customerID);
+ virtual const char* getCustomerInfoAChar( char* p1, const char* );
+ virtual const char* getCustomerInfoBChar( char* p1, char* customerID);
+ virtual const char* getCustomerInfoCChar( char* p1, char customerID);
+ virtual const char* getCustomerInfoDChar( char* p1, char );
+ virtual const char* getCustomerInfoEChar( char* p1, char* );
+ virtual const char* getCustomerInfoFChar( char* p1, char* p1, char* customerID);
+ virtual const char* getCustomerInfoGChar( char* p1, char* , char* p1, signed char* customerID);
+ virtual const char* getCustomerInfoHChar( unsigned char* customerID, const char );
+ virtual const char* getCustomerInfoHChar( unsigned char* customerID, const char* );
+ virtual const long* getCustomerInformationLong(const long* customerID, const long* customerID);
+ virtual const long* getCustomerInfoALong(const long* , const long* );
+ virtual const long* getCustomerInfoBLong( long* customerID, long* customerID2);
+ virtual const long* getCustomerInfoCLong( long customerID, long customerID2);
+ virtual const long* getCustomerInfoDLong( long , long );
+ virtual const long* getCustomerInfoELong( long* , long* );
+ virtual const long* getCustomerInfoFLong( long* customerID, long* customerID2);
+ virtual const long* getCustomerInfoGLong( signed long* customerID, signed long* customerID2);
+ virtual const long* getCustomerInfoHLong( signed long* customerID, signed long* customerID2);
+ virtual const int* getCustomerInformationInt( char* , const int* customerID);
+ virtual const int* getCustomerInfoAInt( char* , const int* );
+ virtual const int* getCustomerInfoBInt( char* , int* customerID);
+ virtual const int* getCustomerInfoCInt( char* , int customerID);
+ virtual const int* getCustomerInfoDInt( char* , int );
+ virtual const int* getCustomerInfoEInt( char* , int* );
+ virtual const int* getCustomerInfoFInt( char* , int* customerID);
+ virtual const int* getCustomerInfoGInt( char* , signed int* customerID);
+ virtual const int* getCustomerInfoHInt( char* , unsigned int* customerID);
+ virtual const __int64* getCustomerInformationint64( Diamond& , const __int64* customerID);
+ virtual const __int64* getCustomerInfoAint64( Diamond& , const __int64* );
+ virtual const __int64* getCustomerInfoBint64( Diamond& , __int64* customerID);
+ virtual const __int64* getCustomerInfoCint64( Diamond& , __int64 customerID);
+ virtual const __int64* getCustomerInfoDint64( Diamond& myDiamond, __int64 );
+ virtual const __int64* getCustomerInfoEint64( Diamond& myDiamond, __int64* );
+ virtual const __int64* getCustomerInfoFint64( Diamond& myDiamond, __int64* customerID);
+ virtual const __int64* getCustomerInfoGint64( Diamond& myDiamond, signed __int64* customerID);
+ virtual const __int64* getCustomerInfoHint64(const Diamond& myDiamond, unsigned int64* customerID);
+ virtual const void* getCustomerInformationVoid( float& f, const __int64* customerID);
+ virtual void getCustomerInfoAVoid(const float& f, const __int64* );
+ virtual void getCustomerInfoBVoid();
+ virtual void getCustomerInfoCVoid();
+ virtual void getCustomerInfoDVoid( void );
+ virtual char getCustomerInfoEVoid( void );
+ virtual char getCustomerInfoFVoid();
+ virtual char getCustomerInfoGVoid( void );
+ virtual const char* getCustomerInfoAInline( int , int , int , int , char* customer id);
+ virtual int getCustomerInfoBInline( int* , int* f, int* g, char* customer id);
+ virtual friend const unsigned int* getCustomerInfoCInline( char* customer id);
+ virtual int getCustomerInfoTrickyA(const char , const char );
+ virtual int getCustomerInfoTrickyB( int myInt, int myInt);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
new file mode 100644
index 0000000000..1f35f8fc96
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
@@ -0,0 +1,414 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Wrapper* CustomerInfoImpl_CustomerInfoService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Wrapper(target);
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::CustomerInfoImpl_CustomerInfoService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CustomerInfoImpl*)getImplementation();
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::~CustomerInfoImpl_CustomerInfoService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CustomerInfoImpl_CustomerInfoService_Wrapper::newImplementation()
+{
+ return new CustomerInfoImpl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getCustomerInformationChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ const char* p1 = *(const char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInformationChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoAChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ const char* p1 = *(const char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoAChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoBChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char* p1 = *( char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoBChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoCChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char& p1 = *( char*)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoCChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoDChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char& p1 = *( char*)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoDChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoEChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char* p1 = *( char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoEChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoFChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char* p1 = *( char**)operation.getParameterValue(1);
+ char* p2 = *( char**)operation.getParameterValue(2);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoFChar(p0, p1, p2);
+ return;
+ }
+ if (operationName == "getCustomerInfoGChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char* p1 = *( char**)operation.getParameterValue(1);
+ char* p2 = *( char**)operation.getParameterValue(2);
+ signed char* p3 = *( signed char**)operation.getParameterValue(3);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoGChar(p0, p1, p2, p3);
+ return;
+ }
+ if (operationName == "getCustomerInfoHChar")
+ {
+ unsigned char* p0 = *( unsigned char**)operation.getParameterValue(0);
+ const char& p1 = *(const char*)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoHChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoHChar")
+ {
+ unsigned char* p0 = *( unsigned char**)operation.getParameterValue(0);
+ const char* p1 = *(const char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoHChar(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInformationLong")
+ {
+ const long* p0 = *(const long**)operation.getParameterValue(0);
+ const long* p1 = *(const long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInformationLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoALong")
+ {
+ const long* p0 = *(const long**)operation.getParameterValue(0);
+ const long* p1 = *(const long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoALong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoBLong")
+ {
+ long* p0 = *( long**)operation.getParameterValue(0);
+ long* p1 = *( long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoBLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoCLong")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoCLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoDLong")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ long& p1 = *( long*)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoDLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoELong")
+ {
+ long* p0 = *( long**)operation.getParameterValue(0);
+ long* p1 = *( long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoELong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoFLong")
+ {
+ long* p0 = *( long**)operation.getParameterValue(0);
+ long* p1 = *( long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoFLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoGLong")
+ {
+ signed long* p0 = *( signed long**)operation.getParameterValue(0);
+ signed long* p1 = *( signed long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoGLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoHLong")
+ {
+ signed long* p0 = *( signed long**)operation.getParameterValue(0);
+ signed long* p1 = *( signed long**)operation.getParameterValue(1);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoHLong(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInformationInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ const int* p1 = *(const int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInformationInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoAInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ const int* p1 = *(const int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoAInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoBInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ int* p1 = *( int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoBInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoCInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ int& p1 = *( int*)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoCInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoDInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ int& p1 = *( int*)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoDInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoEInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ int* p1 = *( int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoEInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoFInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ int* p1 = *( int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoFInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoGInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ signed int* p1 = *( signed int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoGInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoHInt")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ unsigned int* p1 = *( unsigned int**)operation.getParameterValue(1);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoHInt(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInformationint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ const __int64* p1 = *(const __int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInformationint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoAint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ const __int64* p1 = *(const __int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoAint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoBint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ __int64* p1 = *( __int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoBint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoCint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ __int64& p1 = *( __int64*)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoCint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoDint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ __int64& p1 = *( __int64*)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoDint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoEint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ __int64* p1 = *( __int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoEint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoFint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ __int64* p1 = *( __int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoFint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoGint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ signed __int64* p1 = *( signed __int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoGint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoHint64")
+ {
+ Diamond& p0 = *(Diamond*)operation.getParameterValue(0);
+ unsigned int64* p1 = *( unsigned int64**)operation.getParameterValue(1);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoHint64(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInformationVoid")
+ {
+ float& p0 = *(float*)operation.getParameterValue(0);
+ const __int64* p1 = *(const __int64**)operation.getParameterValue(1);
+ *(const void**)operation.getReturnValue() = impl->getCustomerInformationVoid(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoAVoid")
+ {
+ float& p0 = *(float*)operation.getParameterValue(0);
+ const __int64* p1 = *(const __int64**)operation.getParameterValue(1);
+ impl->getCustomerInfoAVoid(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoBVoid")
+ {
+ impl->getCustomerInfoBVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoCVoid")
+ {
+ impl->getCustomerInfoCVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoDVoid")
+ {
+ impl->getCustomerInfoDVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoEVoid")
+ {
+ *(char*)operation.getReturnValue() = impl->getCustomerInfoEVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoFVoid")
+ {
+ *(char*)operation.getReturnValue() = impl->getCustomerInfoFVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoGVoid")
+ {
+ *(char*)operation.getReturnValue() = impl->getCustomerInfoGVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoAInline")
+ {
+ int& p0 = *( int*)operation.getParameterValue(0);
+ int& p1 = *( int*)operation.getParameterValue(1);
+ int& p2 = *( int*)operation.getParameterValue(2);
+ int& p3 = *( int*)operation.getParameterValue(3);
+ char* customer p4 = *( char* customer*)operation.getParameterValue(4);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoAInline(p0, p1, p2, p3, p4);
+ return;
+ }
+ if (operationName == "getCustomerInfoBInline")
+ {
+ int* p0 = *( int**)operation.getParameterValue(0);
+ int* p1 = *( int**)operation.getParameterValue(1);
+ int* p2 = *( int**)operation.getParameterValue(2);
+ char* customer p3 = *( char* customer*)operation.getParameterValue(3);
+ *(int*)operation.getReturnValue() = impl->getCustomerInfoBInline(p0, p1, p2, p3);
+ return;
+ }
+ if (operationName == "getCustomerInfoCInline")
+ {
+ char* customer p0 = *( char* customer*)operation.getParameterValue(0);
+ *(friend const unsigned int**)operation.getReturnValue() = impl->getCustomerInfoCInline(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoTrickyA")
+ {
+ const char& p0 = *(const char*)operation.getParameterValue(0);
+ const char& p1 = *(const char*)operation.getParameterValue(1);
+ *(int*)operation.getReturnValue() = impl->getCustomerInfoTrickyA(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoTrickyB")
+ {
+ int& p0 = *( int*)operation.getParameterValue(0);
+ int& p1 = *( int*)operation.getParameterValue(1);
+ *(int*)operation.getReturnValue() = impl->getCustomerInfoTrickyB(p0, p1);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
new file mode 100644
index 0000000000..94b1d5cb4d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Wrapper_h
+#define CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfoImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CustomerInfoImpl* impl;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
new file mode 100644
index 0000000000..2dd37cba99
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
@@ -0,0 +1,506 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Proxy* CustomerInfoImpl_CustomerInfoService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CustomerInfoImpl_CustomerInfoService_Proxy_Destructor(void* proxy)
+ {
+ delete (CustomerInfoImpl_CustomerInfoService_Proxy*)proxy;
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::CustomerInfoImpl_CustomerInfoService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::~CustomerInfoImpl_CustomerInfoService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationChar(const char* arg0)
+{
+ Operation operation("getCustomerInformationChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAChar(const char* arg0)
+{
+ Operation operation("getCustomerInfoAChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBChar( char* arg0)
+{
+ Operation operation("getCustomerInfoBChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCChar( char arg0)
+{
+ Operation operation("getCustomerInfoCChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDChar( char arg0)
+{
+ Operation operation("getCustomerInfoDChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEChar( char* arg0)
+{
+ Operation operation("getCustomerInfoEChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFChar( char* arg0)
+{
+ Operation operation("getCustomerInfoFChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGChar( signed char* arg0)
+{
+ Operation operation("getCustomerInfoGChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHChar( unsigned char* arg0)
+{
+ Operation operation("getCustomerInfoHChar");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationLong(const long* arg0)
+{
+ Operation operation("getCustomerInformationLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoALong(const long* arg0)
+{
+ Operation operation("getCustomerInfoALong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBLong( long* arg0)
+{
+ Operation operation("getCustomerInfoBLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCLong( long arg0)
+{
+ Operation operation("getCustomerInfoCLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDLong( long arg0)
+{
+ Operation operation("getCustomerInfoDLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoELong( long* arg0)
+{
+ Operation operation("getCustomerInfoELong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFLong( long* arg0)
+{
+ Operation operation("getCustomerInfoFLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGLong( signed long* arg0)
+{
+ Operation operation("getCustomerInfoGLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const long* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHLong( unsigned long* arg0)
+{
+ Operation operation("getCustomerInfoHLong");
+ operation.addParameter(&arg0);
+ const long* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationInt(const int* arg0)
+{
+ Operation operation("getCustomerInformationInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAInt(const int* arg0)
+{
+ Operation operation("getCustomerInfoAInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBInt( int* arg0)
+{
+ Operation operation("getCustomerInfoBInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCInt( int arg0)
+{
+ Operation operation("getCustomerInfoCInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDInt( int arg0)
+{
+ Operation operation("getCustomerInfoDInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEInt( int* arg0)
+{
+ Operation operation("getCustomerInfoEInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFInt( int* arg0)
+{
+ Operation operation("getCustomerInfoFInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGInt( signed int* arg0)
+{
+ Operation operation("getCustomerInfoGInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHInt( unsigned int* arg0)
+{
+ Operation operation("getCustomerInfoHInt");
+ operation.addParameter(&arg0);
+ const int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationint64(const __int64* arg0)
+{
+ Operation operation("getCustomerInformationint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAint64(const __int64* arg0)
+{
+ Operation operation("getCustomerInfoAint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBint64( __int64* arg0)
+{
+ Operation operation("getCustomerInfoBint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCint64( __int64 arg0)
+{
+ Operation operation("getCustomerInfoCint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDint64( __int64 arg0)
+{
+ Operation operation("getCustomerInfoDint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoEint64( __int64* arg0)
+{
+ Operation operation("getCustomerInfoEint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoFint64( __int64* arg0)
+{
+ Operation operation("getCustomerInfoFint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoGint64( signed __int64* arg0)
+{
+ Operation operation("getCustomerInfoGint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const __int64* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoHint64( unsigned int64* arg0)
+{
+ Operation operation("getCustomerInfoHint64");
+ operation.addParameter(&arg0);
+ const __int64* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const void* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationVoid(const __int64* arg0)
+{
+ Operation operation("getCustomerInformationVoid");
+ operation.addParameter(&arg0);
+ const void* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAVoid(const __int64* arg0)
+{
+ Operation operation("getCustomerInfoAVoid");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBVoid()
+{
+ Operation operation("getCustomerInfoBVoid");
+ target->invoke(operation);
+ return;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCVoid()
+{
+ Operation operation("getCustomerInfoCVoid");
+ target->invoke(operation);
+ return;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoDVoid()
+{
+ Operation operation("getCustomerInfoDVoid");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoAInline( char* customer arg0)
+{
+ Operation operation("getCustomerInfoAInline");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+int CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBInline( char* customer arg0)
+{
+ Operation operation("getCustomerInfoBInline");
+ operation.addParameter(&arg0);
+ int ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+friend const unsigned int* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoCInline( char* customer arg0)
+{
+ Operation operation("getCustomerInfoCInline");
+ operation.addParameter(&arg0);
+ friend const unsigned int* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+int CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoTrickyA(const char arg0)
+{
+ Operation operation("getCustomerInfoTrickyA");
+ operation.addParameter(&arg0);
+ int ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+int CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoTrickyB( int arg0)
+{
+ Operation operation("getCustomerInfoTrickyB");
+ operation.addParameter(&arg0);
+ int ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
new file mode 100644
index 0000000000..75f912d3ae
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Proxy_h
+#define CustomerInfoImpl_CustomerInfoService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "/CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Proxy : public CustomerInfo
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformationChar(const char* customerID);
+ virtual const char* getCustomerInfoAChar(const char* );
+ virtual const char* getCustomerInfoBChar( char* customerID);
+ virtual const char* getCustomerInfoCChar( char customerID);
+ virtual const char* getCustomerInfoDChar( char );
+ virtual const char* getCustomerInfoEChar( char* );
+ virtual const char* getCustomerInfoFChar( char* customerID);
+ virtual const char* getCustomerInfoGChar( signed char* customerID);
+ virtual const char* getCustomerInfoHChar( unsigned char* customerID);
+ virtual const long* getCustomerInformationLong(const long* customerID);
+ virtual const long* getCustomerInfoALong(const long* );
+ virtual const long* getCustomerInfoBLong( long* customerID);
+ virtual const long* getCustomerInfoCLong( long customerID);
+ virtual const long* getCustomerInfoDLong( long );
+ virtual const long* getCustomerInfoELong( long* );
+ virtual const long* getCustomerInfoFLong( long* customerID);
+ virtual const long* getCustomerInfoGLong( signed long* customerID);
+ virtual const long* getCustomerInfoHLong( unsigned long* customerID);
+ virtual const int* getCustomerInformationInt(const int* customerID);
+ virtual const int* getCustomerInfoAInt(const int* );
+ virtual const int* getCustomerInfoBInt( int* customerID);
+ virtual const int* getCustomerInfoCInt( int customerID);
+ virtual const int* getCustomerInfoDInt( int );
+ virtual const int* getCustomerInfoEInt( int* );
+ virtual const int* getCustomerInfoFInt( int* customerID);
+ virtual const int* getCustomerInfoGInt( signed int* customerID);
+ virtual const int* getCustomerInfoHInt( unsigned int* customerID);
+ virtual const __int64* getCustomerInformationint64(const __int64* customerID);
+ virtual const __int64* getCustomerInfoAint64(const __int64* );
+ virtual const __int64* getCustomerInfoBint64( __int64* customerID);
+ virtual const __int64* getCustomerInfoCint64( __int64 customerID);
+ virtual const __int64* getCustomerInfoDint64( __int64 );
+ virtual const __int64* getCustomerInfoEint64( __int64* );
+ virtual const __int64* getCustomerInfoFint64( __int64* customerID);
+ virtual const __int64* getCustomerInfoGint64( signed __int64* customerID);
+ virtual const __int64* getCustomerInfoHint64( unsigned int64* customerID);
+ virtual const void* getCustomerInformationVoid(const __int64* customerID);
+ virtual void getCustomerInfoAVoid(const __int64* );
+ virtual void getCustomerInfoBVoid();
+ virtual void getCustomerInfoCVoid();
+ virtual void getCustomerInfoDVoid( void );
+ virtual const char* getCustomerInfoAInline( char* customer id);
+ virtual int getCustomerInfoBInline( char* customer id);
+ virtual friend const unsigned int* getCustomerInfoCInline( char* customer id);
+ virtual int getCustomerInfoTrickyA(const char );
+ virtual int getCustomerInfoTrickyB( int myInt);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
new file mode 100644
index 0000000000..e0da638ea0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
@@ -0,0 +1,342 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Wrapper* CustomerInfoImpl_CustomerInfoService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Wrapper(target);
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::CustomerInfoImpl_CustomerInfoService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CustomerInfoImpl*)getImplementation();
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::~CustomerInfoImpl_CustomerInfoService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CustomerInfoImpl_CustomerInfoService_Wrapper::newImplementation()
+{
+ return new CustomerInfoImpl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getCustomerInformationChar")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInformationChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoAChar")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoAChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoBChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoBChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoCChar")
+ {
+ char& p0 = *( char*)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoCChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoDChar")
+ {
+ char& p0 = *( char*)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoDChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoEChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoEChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoFChar")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoFChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoGChar")
+ {
+ signed char* p0 = *( signed char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoGChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoHChar")
+ {
+ unsigned char* p0 = *( unsigned char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoHChar(p0);
+ return;
+ }
+ if (operationName == "getCustomerInformationLong")
+ {
+ const long* p0 = *(const long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInformationLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoALong")
+ {
+ const long* p0 = *(const long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoALong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoBLong")
+ {
+ long* p0 = *( long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoBLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoCLong")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoCLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoDLong")
+ {
+ long& p0 = *( long*)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoDLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoELong")
+ {
+ long* p0 = *( long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoELong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoFLong")
+ {
+ long* p0 = *( long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoFLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoGLong")
+ {
+ signed long* p0 = *( signed long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoGLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoHLong")
+ {
+ unsigned long* p0 = *( unsigned long**)operation.getParameterValue(0);
+ *(const long**)operation.getReturnValue() = impl->getCustomerInfoHLong(p0);
+ return;
+ }
+ if (operationName == "getCustomerInformationInt")
+ {
+ const int* p0 = *(const int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInformationInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoAInt")
+ {
+ const int* p0 = *(const int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoAInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoBInt")
+ {
+ int* p0 = *( int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoBInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoCInt")
+ {
+ int& p0 = *( int*)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoCInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoDInt")
+ {
+ int& p0 = *( int*)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoDInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoEInt")
+ {
+ int* p0 = *( int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoEInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoFInt")
+ {
+ int* p0 = *( int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoFInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoGInt")
+ {
+ signed int* p0 = *( signed int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoGInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoHInt")
+ {
+ unsigned int* p0 = *( unsigned int**)operation.getParameterValue(0);
+ *(const int**)operation.getReturnValue() = impl->getCustomerInfoHInt(p0);
+ return;
+ }
+ if (operationName == "getCustomerInformationint64")
+ {
+ const __int64* p0 = *(const __int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInformationint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoAint64")
+ {
+ const __int64* p0 = *(const __int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoAint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoBint64")
+ {
+ __int64* p0 = *( __int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoBint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoCint64")
+ {
+ __int64& p0 = *( __int64*)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoCint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoDint64")
+ {
+ __int64& p0 = *( __int64*)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoDint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoEint64")
+ {
+ __int64* p0 = *( __int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoEint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoFint64")
+ {
+ __int64* p0 = *( __int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoFint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoGint64")
+ {
+ signed __int64* p0 = *( signed __int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoGint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoHint64")
+ {
+ unsigned int64* p0 = *( unsigned int64**)operation.getParameterValue(0);
+ *(const __int64**)operation.getReturnValue() = impl->getCustomerInfoHint64(p0);
+ return;
+ }
+ if (operationName == "getCustomerInformationVoid")
+ {
+ const __int64* p0 = *(const __int64**)operation.getParameterValue(0);
+ *(const void**)operation.getReturnValue() = impl->getCustomerInformationVoid(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoAVoid")
+ {
+ const __int64* p0 = *(const __int64**)operation.getParameterValue(0);
+ impl->getCustomerInfoAVoid(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoBVoid")
+ {
+ impl->getCustomerInfoBVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoCVoid")
+ {
+ impl->getCustomerInfoCVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoDVoid")
+ {
+ impl->getCustomerInfoDVoid();
+ return;
+ }
+ if (operationName == "getCustomerInfoAInline")
+ {
+ char* customer p0 = *( char* customer*)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoAInline(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoBInline")
+ {
+ char* customer p0 = *( char* customer*)operation.getParameterValue(0);
+ *(int*)operation.getReturnValue() = impl->getCustomerInfoBInline(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoCInline")
+ {
+ char* customer p0 = *( char* customer*)operation.getParameterValue(0);
+ *(friend const unsigned int**)operation.getReturnValue() = impl->getCustomerInfoCInline(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoTrickyA")
+ {
+ const char& p0 = *(const char*)operation.getParameterValue(0);
+ *(int*)operation.getReturnValue() = impl->getCustomerInfoTrickyA(p0);
+ return;
+ }
+ if (operationName == "getCustomerInfoTrickyB")
+ {
+ int& p0 = *( int*)operation.getParameterValue(0);
+ *(int*)operation.getReturnValue() = impl->getCustomerInfoTrickyB(p0);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
new file mode 100644
index 0000000000..94b1d5cb4d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Wrapper_h
+#define CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfoImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CustomerInfoImpl* impl;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp
new file mode 100644
index 0000000000..a9d033d415
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl2_CustomerInfoService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl2_CustomerInfoService_Proxy* CustomerInfoImpl2_CustomerInfoService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CustomerInfoImpl2_CustomerInfoService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CustomerInfoImpl2_CustomerInfoService_Proxy_Destructor(void* proxy)
+ {
+ delete (CustomerInfoImpl2_CustomerInfoService_Proxy*)proxy;
+ }
+}
+
+CustomerInfoImpl2_CustomerInfoService_Proxy::CustomerInfoImpl2_CustomerInfoService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CustomerInfoImpl2_CustomerInfoService_Proxy::~CustomerInfoImpl2_CustomerInfoService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* CustomerInfoImpl2_CustomerInfoService_Proxy::getCustomerInformation(const char* arg0)
+{
+ Operation operation("getCustomerInformation");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h
new file mode 100644
index 0000000000..594f404d13
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl2_CustomerInfoService_Proxy_h
+#define CustomerInfoImpl2_CustomerInfoService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "/CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CustomerInfoImpl2_CustomerInfoService_Proxy : public CustomerInfo
+{
+public:
+ CustomerInfoImpl2_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl2_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CustomerInfoImpl2_CustomerInfoService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp
new file mode 100644
index 0000000000..ba75bde415
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl2_CustomerInfoService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl2_CustomerInfoService_Wrapper* CustomerInfoImpl2_CustomerInfoService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CustomerInfoImpl2_CustomerInfoService_Wrapper(target);
+ }
+}
+
+CustomerInfoImpl2_CustomerInfoService_Wrapper::CustomerInfoImpl2_CustomerInfoService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CustomerInfoImpl2*)getImplementation();
+}
+
+CustomerInfoImpl2_CustomerInfoService_Wrapper::~CustomerInfoImpl2_CustomerInfoService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CustomerInfoImpl2_CustomerInfoService_Wrapper::newImplementation()
+{
+ return new CustomerInfoImpl2;
+}
+
+void CustomerInfoImpl2_CustomerInfoService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CustomerInfoImpl2_CustomerInfoService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getCustomerInformation")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInformation(p0);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h
new file mode 100644
index 0000000000..b85533cfd4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl2_CustomerInfoService_Wrapper_h
+#define CustomerInfoImpl2_CustomerInfoService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfoImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CustomerInfoImpl2_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CustomerInfoImpl2_CustomerInfoService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CustomerInfoImpl2_CustomerInfoService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CustomerInfoImpl2* impl;
+};
+
+#endif // CustomerInfoImpl2_CustomerInfoService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.cpp
new file mode 100644
index 0000000000..eeb977a62a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValue(const char* arg0)
+{
+ Operation operation("getMyValue");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueS(const string& arg0)
+{
+ Operation operation("getMyValueS");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustname( string& arg0)
+{
+ Operation operation("getCustname");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecs( string arg0)
+{
+ Operation operation("getCustnamecs");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.h
new file mode 100644
index 0000000000..d61c806e44
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.h
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname( string& customerID);
+ virtual const string& getCustnamecs( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
new file mode 100644
index 0000000000..f626664679
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValue")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValue(p0);
+ return;
+ }
+ if (operationName == "getMyValueS")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueS(p0);
+ return;
+ }
+ if (operationName == "getCustname")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustname(p0);
+ return;
+ }
+ if (operationName == "getCustnamecs")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecs(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.h
new file mode 100644
index 0000000000..d3eef80e8f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.cpp
new file mode 100644
index 0000000000..f21b0dd83c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_customerInfo_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_customerInfo_Proxy* MyValueImpl_customerInfo_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_customerInfo_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_customerInfo_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_customerInfo_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_customerInfo_Proxy::MyValueImpl_customerInfo_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_customerInfo_Proxy::~MyValueImpl_customerInfo_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* MyValueImpl_customerInfo_Proxy::getCustomerInformation(const char* arg0)
+{
+ Operation operation("getCustomerInformation");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.h
new file mode 100644
index 0000000000..3d1d279b7c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_customerInfo_Proxy_h
+#define MyValueImpl_customerInfo_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_customerInfo_Proxy : public CustomerInfo
+{
+public:
+ MyValueImpl_customerInfo_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_customerInfo_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_customerInfo_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.cpp
new file mode 100644
index 0000000000..6d418bc330
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_stockQuote_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_stockQuote_Proxy* MyValueImpl_stockQuote_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_stockQuote_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_stockQuote_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_stockQuote_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_stockQuote_Proxy::MyValueImpl_stockQuote_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_stockQuote_Proxy::~MyValueImpl_stockQuote_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+commonj::sdo::DataObjectPtr MyValueImpl_stockQuote_Proxy::GetStockQuotes( commonj::sdo::DataObjectPtr arg0)
+{
+ Operation operation("GetStockQuotes");
+ operation.addParameter(&arg0);
+ commonj::sdo::DataObjectPtr ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.h
new file mode 100644
index 0000000000..ad5cee3ca7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_stockQuote_Proxy_h
+#define MyValueImpl_stockQuote_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "StockQuoteService.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_stockQuote_Proxy : public StockQuoteService
+{
+public:
+ MyValueImpl_stockQuote_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_stockQuote_Proxy();
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes( commonj::sdo::DataObjectPtr request);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_stockQuote_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
new file mode 100644
index 0000000000..3dcfbb5a08
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Proxy* CustomerInfoImpl_CustomerInfoService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CustomerInfoImpl_CustomerInfoService_Proxy_Destructor(void* proxy)
+ {
+ delete (CustomerInfoImpl_CustomerInfoService_Proxy*)proxy;
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::CustomerInfoImpl_CustomerInfoService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::~CustomerInfoImpl_CustomerInfoService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformation(const char* arg0)
+{
+ Operation operation("getCustomerInformation");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
new file mode 100644
index 0000000000..2bf1b90e87
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Proxy_h
+#define CustomerInfoImpl_CustomerInfoService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "/CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Proxy : public CustomerInfo
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
new file mode 100644
index 0000000000..b2f23f5cf1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+using Other::CustomerInfoImpl;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Wrapper* CustomerInfoImpl_CustomerInfoService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Wrapper(target);
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::CustomerInfoImpl_CustomerInfoService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CustomerInfoImpl*)getImplementation();
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::~CustomerInfoImpl_CustomerInfoService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CustomerInfoImpl_CustomerInfoService_Wrapper::newImplementation()
+{
+ return new CustomerInfoImpl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getCustomerInformation")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInformation(p0);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
new file mode 100644
index 0000000000..82995c96b0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Wrapper_h
+#define CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfoImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ Other::CustomerInfoImpl* impl;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp
new file mode 100644
index 0000000000..eeb977a62a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValue(const char* arg0)
+{
+ Operation operation("getMyValue");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueS(const string& arg0)
+{
+ Operation operation("getMyValueS");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustname( string& arg0)
+{
+ Operation operation("getCustname");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecs( string arg0)
+{
+ Operation operation("getCustnamecs");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h
new file mode 100644
index 0000000000..d61c806e44
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname( string& customerID);
+ virtual const string& getCustnamecs( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
new file mode 100644
index 0000000000..f03b0fbc10
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+using Other::MyValueImpl;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValue")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValue(p0);
+ return;
+ }
+ if (operationName == "getMyValueS")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueS(p0);
+ return;
+ }
+ if (operationName == "getCustname")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustname(p0);
+ return;
+ }
+ if (operationName == "getCustnamecs")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecs(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h
new file mode 100644
index 0000000000..df388bf43d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ Other::MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.cpp
new file mode 100644
index 0000000000..f21b0dd83c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_customerInfo_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_customerInfo_Proxy* MyValueImpl_customerInfo_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_customerInfo_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_customerInfo_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_customerInfo_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_customerInfo_Proxy::MyValueImpl_customerInfo_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_customerInfo_Proxy::~MyValueImpl_customerInfo_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* MyValueImpl_customerInfo_Proxy::getCustomerInformation(const char* arg0)
+{
+ Operation operation("getCustomerInformation");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.h
new file mode 100644
index 0000000000..3d1d279b7c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_customerInfo_Proxy_h
+#define MyValueImpl_customerInfo_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_customerInfo_Proxy : public CustomerInfo
+{
+public:
+ MyValueImpl_customerInfo_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_customerInfo_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_customerInfo_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.cpp
new file mode 100644
index 0000000000..6d418bc330
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_stockQuote_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_stockQuote_Proxy* MyValueImpl_stockQuote_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_stockQuote_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_stockQuote_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_stockQuote_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_stockQuote_Proxy::MyValueImpl_stockQuote_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_stockQuote_Proxy::~MyValueImpl_stockQuote_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+commonj::sdo::DataObjectPtr MyValueImpl_stockQuote_Proxy::GetStockQuotes( commonj::sdo::DataObjectPtr arg0)
+{
+ Operation operation("GetStockQuotes");
+ operation.addParameter(&arg0);
+ commonj::sdo::DataObjectPtr ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.h
new file mode 100644
index 0000000000..ad5cee3ca7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_stockQuote_Proxy_h
+#define MyValueImpl_stockQuote_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "StockQuoteService.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_stockQuote_Proxy : public StockQuoteService
+{
+public:
+ MyValueImpl_stockQuote_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_stockQuote_Proxy();
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes( commonj::sdo::DataObjectPtr request);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_stockQuote_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp
new file mode 100644
index 0000000000..2e32caea94
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueOther(const char* arg0)
+{
+ Operation operation("getMyValueOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueSOther(const string& arg0)
+{
+ Operation operation("getMyValueSOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustnameOther( string& arg0)
+{
+ Operation operation("getCustnameOther");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecsOther( string arg0)
+{
+ Operation operation("getCustnamecsOther");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueOther(const char* arg0)
+{
+ Operation operation("getMyValueOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueSOther(const string& arg0)
+{
+ Operation operation("getMyValueSOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustnameOther( string& arg0)
+{
+ Operation operation("getCustnameOther");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecsOther( string arg0)
+{
+ Operation operation("getCustnamecsOther");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h
new file mode 100644
index 0000000000..d3b173ee57
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValueOther(const char* customerID);
+ virtual float getMyValueSOther(const string& customerID);
+ virtual string getCustnameOther( string& customerID);
+ virtual const string& getCustnamecsOther( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValueOther(const char* customerID);
+ virtual float getMyValueSOther(const string& customerID);
+ virtual string getCustnameOther( string& customerID);
+ virtual const string& getCustnamecsOther( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
new file mode 100644
index 0000000000..0495bb9abc
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+using myvaluecorp::implns::MyValueImpl;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValueOther")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueOther(p0);
+ return;
+ }
+ if (operationName == "getMyValueSOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueSOther(p0);
+ return;
+ }
+ if (operationName == "getCustnameOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustnameOther(p0);
+ return;
+ }
+ if (operationName == "getCustnamecsOther")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecsOther(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+using myvaluecorp::implns::MyValueImpl;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValueOther")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueOther(p0);
+ return;
+ }
+ if (operationName == "getMyValueSOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueSOther(p0);
+ return;
+ }
+ if (operationName == "getCustnameOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustnameOther(p0);
+ return;
+ }
+ if (operationName == "getCustnamecsOther")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecsOther(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h
new file mode 100644
index 0000000000..5522cde72a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ myvaluecorp::implns::MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ myvaluecorp::implns::MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp
new file mode 100644
index 0000000000..70643f76f6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueOther(const char* arg0)
+{
+ Operation operation("getMyValueOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueSOther(const string& arg0)
+{
+ Operation operation("getMyValueSOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustnameOther( string& arg0)
+{
+ Operation operation("getCustnameOther");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecsOther( string arg0)
+{
+ Operation operation("getCustnamecsOther");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h
new file mode 100644
index 0000000000..210da9a64c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public Other::MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValueOther(const char* customerID);
+ virtual float getMyValueSOther(const string& customerID);
+ virtual string getCustnameOther( string& customerID);
+ virtual const string& getCustnamecsOther( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
new file mode 100644
index 0000000000..e924448d4c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValueOther")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueOther(p0);
+ return;
+ }
+ if (operationName == "getMyValueSOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueSOther(p0);
+ return;
+ }
+ if (operationName == "getCustnameOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustnameOther(p0);
+ return;
+ }
+ if (operationName == "getCustnamecsOther")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecsOther(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h
new file mode 100644
index 0000000000..d3eef80e8f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp
new file mode 100644
index 0000000000..70643f76f6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueOther(const char* arg0)
+{
+ Operation operation("getMyValueOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueSOther(const string& arg0)
+{
+ Operation operation("getMyValueSOther");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustnameOther( string& arg0)
+{
+ Operation operation("getCustnameOther");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecsOther( string arg0)
+{
+ Operation operation("getCustnamecsOther");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h
new file mode 100644
index 0000000000..210da9a64c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public Other::MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValueOther(const char* customerID);
+ virtual float getMyValueSOther(const string& customerID);
+ virtual string getCustnameOther( string& customerID);
+ virtual const string& getCustnamecsOther( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
new file mode 100644
index 0000000000..e924448d4c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValueOther")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueOther(p0);
+ return;
+ }
+ if (operationName == "getMyValueSOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueSOther(p0);
+ return;
+ }
+ if (operationName == "getCustnameOther")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustnameOther(p0);
+ return;
+ }
+ if (operationName == "getCustnamecsOther")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecsOther(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h
new file mode 100644
index 0000000000..d3eef80e8f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp
new file mode 100644
index 0000000000..a9d033d415
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl2_CustomerInfoService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl2_CustomerInfoService_Proxy* CustomerInfoImpl2_CustomerInfoService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CustomerInfoImpl2_CustomerInfoService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CustomerInfoImpl2_CustomerInfoService_Proxy_Destructor(void* proxy)
+ {
+ delete (CustomerInfoImpl2_CustomerInfoService_Proxy*)proxy;
+ }
+}
+
+CustomerInfoImpl2_CustomerInfoService_Proxy::CustomerInfoImpl2_CustomerInfoService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CustomerInfoImpl2_CustomerInfoService_Proxy::~CustomerInfoImpl2_CustomerInfoService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* CustomerInfoImpl2_CustomerInfoService_Proxy::getCustomerInformation(const char* arg0)
+{
+ Operation operation("getCustomerInformation");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h
new file mode 100644
index 0000000000..594f404d13
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl2_CustomerInfoService_Proxy_h
+#define CustomerInfoImpl2_CustomerInfoService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "/CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CustomerInfoImpl2_CustomerInfoService_Proxy : public CustomerInfo
+{
+public:
+ CustomerInfoImpl2_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl2_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CustomerInfoImpl2_CustomerInfoService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp
new file mode 100644
index 0000000000..86b12f82e1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl2_CustomerInfoService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl2_CustomerInfoService_Wrapper* CustomerInfoImpl2_CustomerInfoService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CustomerInfoImpl2_CustomerInfoService_Wrapper(target);
+ }
+}
+
+CustomerInfoImpl2_CustomerInfoService_Wrapper::CustomerInfoImpl2_CustomerInfoService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CustomerInfoImpl2*)getImplementation();
+}
+
+CustomerInfoImpl2_CustomerInfoService_Wrapper::~CustomerInfoImpl2_CustomerInfoService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CustomerInfoImpl2_CustomerInfoService_Wrapper::newImplementation()
+{
+ return new CustomerInfoImpl2;
+}
+
+void CustomerInfoImpl2_CustomerInfoService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CustomerInfoImpl2_CustomerInfoService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getCustomerInformation")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInformation(p0);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h
new file mode 100644
index 0000000000..b85533cfd4
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl2_CustomerInfoService_Wrapper_h
+#define CustomerInfoImpl2_CustomerInfoService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfoImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CustomerInfoImpl2_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CustomerInfoImpl2_CustomerInfoService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CustomerInfoImpl2_CustomerInfoService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CustomerInfoImpl2* impl;
+};
+
+#endif // CustomerInfoImpl2_CustomerInfoService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.cpp
new file mode 100644
index 0000000000..eeb977a62a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.cpp
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Proxy* MyValueImpl_MyValueService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_MyValueService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_MyValueService_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_MyValueService_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_MyValueService_Proxy::MyValueImpl_MyValueService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_MyValueService_Proxy::~MyValueImpl_MyValueService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValue(const char* arg0)
+{
+ Operation operation("getMyValue");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+float MyValueImpl_MyValueService_Proxy::getMyValueS(const string& arg0)
+{
+ Operation operation("getMyValueS");
+ operation.addParameter(&arg0);
+ float ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+string MyValueImpl_MyValueService_Proxy::getCustname( string& arg0)
+{
+ Operation operation("getCustname");
+ operation.addParameter(&arg0);
+ string ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const string& MyValueImpl_MyValueService_Proxy::getCustnamecs( string arg0)
+{
+ Operation operation("getCustnamecs");
+ operation.addParameter(&arg0);
+ target->invoke(operation);
+ return *(const string*)operation.getReturnValue();
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.h
new file mode 100644
index 0000000000..742947ca69
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Proxy_h
+#define MyValueImpl_MyValueService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValue.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Proxy : public MyValue
+{
+public:
+ MyValueImpl_MyValueService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_MyValueService_Proxy();
+ virtual float getMyValue(const char* customerID);
+ virtual float getMyValueS(const string& customerID);
+ virtual string getCustname( string& customerID);
+ virtual const string& getCustnamecs( string customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_MyValueService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
new file mode 100644
index 0000000000..9d8604c587
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.cpp
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_MyValueService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_MyValueService_Wrapper* MyValueImpl_MyValueService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new MyValueImpl_MyValueService_Wrapper(target);
+ }
+}
+
+MyValueImpl_MyValueService_Wrapper::MyValueImpl_MyValueService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (MyValueImpl*)getImplementation();
+}
+
+MyValueImpl_MyValueService_Wrapper::~MyValueImpl_MyValueService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* MyValueImpl_MyValueService_Wrapper::newImplementation()
+{
+ return new MyValueImpl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void MyValueImpl_MyValueService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getMyValue")
+ {
+ const char* p0 = *(const char**)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValue(p0);
+ return;
+ }
+ if (operationName == "getMyValueS")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(float*)operation.getReturnValue() = impl->getMyValueS(p0);
+ return;
+ }
+ if (operationName == "getCustname")
+ {
+ string& p0 = *(string*)operation.getParameterValue(0);
+ *(string*)operation.getReturnValue() = impl->getCustname(p0);
+ return;
+ }
+ if (operationName == "getCustnamecs")
+ {
+ string& p0 = *( string*)operation.getParameterValue(0);
+ const string& ret = impl->getCustnamecs(p0);
+ operation.setReturnValue(&ret);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.h
new file mode 100644
index 0000000000..d3eef80e8f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_MyValueService_Wrapper_h
+#define MyValueImpl_MyValueService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "MyValueImpl.hpp"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class MyValueImpl_MyValueService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ MyValueImpl_MyValueService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~MyValueImpl_MyValueService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ MyValueImpl* impl;
+};
+
+#endif // MyValueImpl_MyValueService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.cpp
new file mode 100644
index 0000000000..f21b0dd83c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_customerInfo_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_customerInfo_Proxy* MyValueImpl_customerInfo_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_customerInfo_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_customerInfo_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_customerInfo_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_customerInfo_Proxy::MyValueImpl_customerInfo_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_customerInfo_Proxy::~MyValueImpl_customerInfo_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* MyValueImpl_customerInfo_Proxy::getCustomerInformation(const char* arg0)
+{
+ Operation operation("getCustomerInformation");
+ operation.addParameter(&arg0);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.h
new file mode 100644
index 0000000000..3d1d279b7c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_customerInfo_Proxy_h
+#define MyValueImpl_customerInfo_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_customerInfo_Proxy : public CustomerInfo
+{
+public:
+ MyValueImpl_customerInfo_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_customerInfo_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_customerInfo_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.cpp
new file mode 100644
index 0000000000..6d418bc330
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "MyValueImpl_stockQuote_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ MyValueImpl_stockQuote_Proxy* MyValueImpl_stockQuote_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new MyValueImpl_stockQuote_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void MyValueImpl_stockQuote_Proxy_Destructor(void* proxy)
+ {
+ delete (MyValueImpl_stockQuote_Proxy*)proxy;
+ }
+}
+
+MyValueImpl_stockQuote_Proxy::MyValueImpl_stockQuote_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+MyValueImpl_stockQuote_Proxy::~MyValueImpl_stockQuote_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+commonj::sdo::DataObjectPtr MyValueImpl_stockQuote_Proxy::GetStockQuotes( commonj::sdo::DataObjectPtr arg0)
+{
+ Operation operation("GetStockQuotes");
+ operation.addParameter(&arg0);
+ commonj::sdo::DataObjectPtr ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.h
new file mode 100644
index 0000000000..ad5cee3ca7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.h
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef MyValueImpl_stockQuote_Proxy_h
+#define MyValueImpl_stockQuote_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "StockQuoteService.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class MyValueImpl_stockQuote_Proxy : public StockQuoteService
+{
+public:
+ MyValueImpl_stockQuote_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~MyValueImpl_stockQuote_Proxy();
+ virtual commonj::sdo::DataObjectPtr GetStockQuotes( commonj::sdo::DataObjectPtr request);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // MyValueImpl_stockQuote_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
new file mode 100644
index 0000000000..2a060fc47e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Proxy.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Proxy* CustomerInfoImpl_CustomerInfoService_Proxy_Factory(ServiceWrapper* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Proxy(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void CustomerInfoImpl_CustomerInfoService_Proxy_Destructor(void* proxy)
+ {
+ delete (CustomerInfoImpl_CustomerInfoService_Proxy*)proxy;
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::CustomerInfoImpl_CustomerInfoService_Proxy(ServiceWrapper* targ) : target(targ)
+{
+}
+
+CustomerInfoImpl_CustomerInfoService_Proxy::~CustomerInfoImpl_CustomerInfoService_Proxy()
+{
+ if (target)
+ delete target;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInformationCharPublic( char* arg0, const char* arg1)
+{
+ Operation operation("getCustomerInformationCharPublic");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoACharPublic( char* arg0, const char* arg1)
+{
+ Operation operation("getCustomerInfoACharPublic");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+const char* CustomerInfoImpl_CustomerInfoService_Proxy::getCustomerInfoBCharPublic( char* arg0, char* arg1)
+{
+ Operation operation("getCustomerInfoBCharPublic");
+ operation.addParameter(&arg0);
+ operation.addParameter(&arg1);
+ const char* ret;
+ operation.setReturnValue(&ret);
+ target->invoke(operation);
+ return ret;
+}
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
new file mode 100644
index 0000000000..a9b56bdb5c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Proxy_h
+#define CustomerInfoImpl_CustomerInfoService_Proxy_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "/CustomerInfo.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Proxy : public CustomerInfo
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformationCharPublic( char* p1, const char* customerID);
+ virtual const char* getCustomerInfoACharPublic( char* p1, const char* );
+ virtual const char* getCustomerInfoBCharPublic( char* p1, char* customerID);
+private:
+ tuscany::sca::ServiceWrapper* target;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Proxy_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
new file mode 100644
index 0000000000..9672e5efc7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include "CustomerInfoImpl_CustomerInfoService_Wrapper.h"
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+
+
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ CustomerInfoImpl_CustomerInfoService_Wrapper* CustomerInfoImpl_CustomerInfoService_Wrapper_Factory(tuscany::sca::model::Service* target)
+ {
+ return new CustomerInfoImpl_CustomerInfoService_Wrapper(target);
+ }
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::CustomerInfoImpl_CustomerInfoService_Wrapper(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (CustomerInfoImpl*)getImplementation();
+}
+
+CustomerInfoImpl_CustomerInfoService_Wrapper::~CustomerInfoImpl_CustomerInfoService_Wrapper()
+{
+ releaseImplementation();
+}
+
+void* CustomerInfoImpl_CustomerInfoService_Wrapper::newImplementation()
+{
+ return new CustomerInfoImpl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::deleteImplementation()
+{
+ delete impl;
+}
+
+void CustomerInfoImpl_CustomerInfoService_Wrapper::invokeService(Operation& operation)
+{
+ const string& operationName = operation.getName();
+
+ if (operationName == "getCustomerInformationCharPublic")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ const char* p1 = *(const char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInformationCharPublic(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoACharPublic")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ const char* p1 = *(const char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoACharPublic(p0, p1);
+ return;
+ }
+ if (operationName == "getCustomerInfoBCharPublic")
+ {
+ char* p0 = *( char**)operation.getParameterValue(0);
+ char* p1 = *( char**)operation.getParameterValue(1);
+ *(const char**)operation.getReturnValue() = impl->getCustomerInfoBCharPublic(p0, p1);
+ return;
+ }
+
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
new file mode 100644
index 0000000000..94b1d5cb4d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef CustomerInfoImpl_CustomerInfoService_Wrapper_h
+#define CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "CustomerInfoImpl.h"
+#include "tuscany/sca/cpp/CPPServiceWrapper.h"
+
+class CustomerInfoImpl_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ CustomerInfoImpl_CustomerInfoService_Wrapper(tuscany::sca::model::Service* target);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Wrapper();
+ virtual void invokeService(tuscany::sca::Operation& operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+private:
+ CustomerInfoImpl* impl;
+};
+
+#endif // CustomerInfoImpl_CustomerInfoService_Wrapper_h
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/lib/readme.txt b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/lib/readme.txt
new file mode 100644
index 0000000000..d99c666c6a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/lib/readme.txt
@@ -0,0 +1,4 @@
+Place a junit.jar file (not shipped as part of Tuscany)
+in this directory to get the scagen build.xml Ant build
+file to find it and Junit classes (without setting the
+property "junit.jar.folder".
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.cmd b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.cmd
new file mode 100644
index 0000000000..8ab5e4abdf
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.cmd
@@ -0,0 +1,19 @@
+@echo off
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+
+@java -jar %~d0%~p0scagen.jar %*
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.sh b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.sh
new file mode 100755
index 0000000000..c50f28b98f
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/scagen.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+java -jar scagen.jar -dir $2 -output $4 \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/BodyPart.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/BodyPart.java
new file mode 100644
index 0000000000..4ccbe0c750
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/BodyPart.java
@@ -0,0 +1,96 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+
+package org.apache.tuscany.sca.cpp.tools.common;
+
+/**
+ * A snippet of C or C++ source code. If this snippet ends with a return
+ * statement, this body part also contains the return value.
+ */
+public class BodyPart {
+ public final static int TRAILING = 0;
+
+ public final static int RETURN = 1;
+
+ public final static int CATCH = 2;
+
+ private String codeFragment;
+
+ private String returnValue = null;
+
+ private Parameter caughtValue = null;
+
+ private int type;
+
+ BodyPart(String cf) {
+ codeFragment = cf;
+ type = TRAILING;
+ }
+
+ BodyPart(String cf, String rv) {
+ codeFragment = cf;
+ if (null != rv && !Utils.isSpace(rv)) {
+ type = RETURN;
+ returnValue = rv;
+ } else
+ type = TRAILING;
+ }
+
+ BodyPart(String cf, Parameter cv) {
+ codeFragment = cf;
+ caughtValue = cv;
+ type = CATCH;
+ }
+
+ public String getCodeFragment() {
+ return codeFragment;
+ }
+
+ public boolean isTrailing() {
+ return TRAILING == type;
+ }
+
+ public boolean isReturn() {
+ return RETURN == type;
+ }
+
+ public boolean isCatch() {
+ return CATCH == type;
+ }
+
+ public String getReturnValue() {
+ if (returnValue != null)
+ return returnValue.trim();
+ else
+ return null;
+ }
+
+ public Parameter getCaughtValue() {
+ return caughtValue;
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/CParsingTool.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/CParsingTool.java
new file mode 100644
index 0000000000..669901b4b5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/CParsingTool.java
@@ -0,0 +1,124 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * The superclass of tools that parse C/C++ code. This CParsingTool provides
+ * some useful common methods.
+ */
+public class CParsingTool {
+ protected boolean failed = false;
+
+ protected Headers headers = new Headers();
+
+ protected CParsingTool(String[] args) throws Exception {
+ String text = new String();
+ for (int i = 0; i < args.length; i++)
+ text += args[i] + " ";
+ Utils.outputDebugString(text);
+
+ Options.set(args);
+ String config = (String) Options.getOption("-config");
+ if (null != config)
+ Configuration.initialise(config);
+ }
+
+ /**
+ * Read in any include files before the main processing of the tool is done.
+ * This constructs the Headers.
+ */
+ protected Headers preparseHeaders(String option) throws Exception {
+ Headers headers = new Headers();
+ Object o = Options.getOption(option);
+ if (null != o) {
+ Utils.outputDebugString("Pre-parsing headers...");
+ List includeList;
+ if (o instanceof List)
+ includeList = (List) o;
+ else {
+ includeList = new ArrayList();
+ includeList.add(o);
+ }
+ Iterator it = includeList.iterator();
+ while (it.hasNext()) {
+ File include = new File((String) it.next());
+ if (!include.isDirectory())
+ Utils.rude("Bad include directory " + include);
+
+ DirectoryTree tree = new DirectoryTree(headers, new HashSet(
+ Arrays.asList(new Object[] { "hpp", "h" })));
+ tree.walkTree(include, null, 0);
+ }
+ Utils.outputDebugString("Parsing files...");
+ }
+
+ return headers;
+ }
+
+ /**
+ * Checks the source directory looks good.
+ */
+ protected File checkFile(String option) throws Exception {
+ String name = (String) Options.getOption(option);
+ if (null == name) {
+ printUsage();
+ System.exit(-1);
+ }
+
+ File file = new File(name);
+ if (!file.isFile() && !file.isDirectory())
+ Utils.rude("Bad file or directory " + file);
+ return file;
+ }
+
+ /**
+ * Checks the target directory and creates it if it doesn't already exist.
+ */
+ protected File maybeCreateDirectory(String option) throws Exception {
+ String name = (String) Options.getOption(option);
+ if (null == name) {
+ printUsage();
+ System.exit(-1);
+ }
+
+ File file = new File(name);
+ if (!file.exists() && !file.mkdir())
+ Utils.screenMessage("Failed to create directory " + file);
+ return file;
+ }
+
+ protected void printUsage() {
+ System.out.println("usage: ??");
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Configuration.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Configuration.java
new file mode 100644
index 0000000000..246a489c9c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Configuration.java
@@ -0,0 +1,132 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Encapsulates the tool's configuration file
+ */
+public class Configuration {
+ private static Set files = new HashSet();
+
+ private static Set classes = new HashSet();
+
+ private static Set methods = new HashSet();
+
+ private static Set macros = new HashSet();
+
+ private static Set defines = new HashSet();
+
+ private static Set attributes = new HashSet();
+
+ private static Map others = new HashMap();
+
+ /**
+ * No one creates an instance of this class.
+ */
+ private Configuration() {
+ }
+
+ /**
+ * Reads in the configuration file
+ */
+ public static void initialise(String filename) throws Exception {
+ File file = new File(filename);
+ FileReader fr = new FileReader(file);
+ BufferedReader br = new BufferedReader(fr);
+ String line = br.readLine();
+ for (int lineno = 1; null != line; lineno++, line = br.readLine()) {
+ // Ignore lines starting with a # (comments) and blank lines
+ if (line.startsWith("#"))
+ continue;
+ boolean blank = true;
+ for (int i = 0; i < line.length() && blank; i++)
+ if (!Character.isWhitespace(line.charAt(i)))
+ blank = false;
+ if (blank)
+ continue;
+
+ int equals = line.indexOf("=");
+ if (-1 == equals)
+ Utils.rude("Bad line in configuration file " + filename
+ + " lineno " + lineno);
+ String key = line.substring(0, equals).trim();
+ String value = line.substring(equals + 1).trim();
+ if ("excludefile".equals(key)) {
+ files.add(value);
+ } else if ("excludeclass".equals(key)) {
+ classes.add(value);
+ } else if ("excludemethod".equals(key)) {
+ methods.add(value);
+ } else if ("macro".equals(key)) {
+ macros.add(value);
+ } else if ("define".equals(key)) {
+ defines.add(value);
+ } else if ("attribute".equals(key)) {
+ attributes.add(value);
+ } else {
+ others.put(key, value);
+ }
+ }
+ }
+
+ public static boolean fileExcluded(String s) {
+ return files.contains(s);
+ }
+
+ public static boolean classExcluded(String s) {
+ return classes.contains(s);
+ }
+
+ public static boolean methodExcluded(String className, String method) {
+ return methods.contains(className + "::" + method);
+ }
+
+ public static boolean isMacro(String s) {
+ return macros.contains(s);
+ }
+
+ public static boolean isDefine(String s) {
+ return defines.contains(s);
+ }
+
+ public static boolean isAttribute(String s) {
+ return attributes.contains(s);
+ }
+
+ public static String getConfigured(String key) {
+ return (String) others.get(key);
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/DirectoryTree.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/DirectoryTree.java
new file mode 100644
index 0000000000..36d0af18b3
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/DirectoryTree.java
@@ -0,0 +1,105 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.File;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+public class DirectoryTree {
+ private FileActor actor;
+
+ private Set extensions;
+
+ public DirectoryTree(FileActor actor, Set extensions) {
+ this.actor = actor;
+ this.extensions = extensions;
+ }
+
+ /**
+ * Starts adding trace into the given file. If the given file is a directory
+ * then this the starting directory and all code beneath and in this
+ * directory will be given trace.
+ *
+ * @param source -
+ * either the starting directory or one file to add trace to.
+ */
+ public void walkTree(File source, File target, int depth) throws Exception {
+ depth++;
+ boolean noTarget = (null == target);
+
+ if (!source.canRead())
+ Utils.rude("Cannot read from source directory " + source);
+ if (!noTarget && !target.canWrite())
+ Utils.rude("Cannot write to target directory " + target);
+
+ if (source.isDirectory()) {
+ File[] filesInDirectory = source.listFiles();
+ for (int i = 0; i < filesInDirectory.length; i++) {
+ File file = filesInDirectory[i];
+ String name = file.getName();
+ int dot = name.lastIndexOf('.');
+ String ext = null;
+ if (-1 != dot)
+ ext = name.substring(dot + 1);
+
+ if (file.isDirectory()) {
+ File newTarget = null;
+ if (!noTarget) {
+ StringTokenizer st = new StringTokenizer(
+ file.getPath(), "\\/");
+ String newdir = null;
+ while (st.hasMoreTokens())
+ newdir = st.nextToken();
+ String targetName = maybeAppendSeparator(target
+ .toString());
+ newTarget = new File(targetName + newdir);
+ if (!newTarget.mkdir())
+ Utils.rude("Failed to create target directory "
+ + newTarget);
+ }
+
+ // recurse
+ walkTree(file, newTarget, depth);
+ } else if (file.isFile()
+ && (extensions == null || (!file.isHidden() && extensions
+ .contains(ext)))) {
+ // this is a file and we need to add trace into it !
+ actor.actOnFile(file, target, depth);
+ }
+ }
+ } else {
+ actor.actOnFile(source, target, depth);
+ }
+ }
+
+ public static String maybeAppendSeparator(String name) {
+ if (!name.endsWith("/") && !name.endsWith("\\"))
+ name += "/";
+ return name;
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FileActor.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FileActor.java
new file mode 100644
index 0000000000..a2bb4ba858
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FileActor.java
@@ -0,0 +1,37 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.File;
+
+/**
+ * DirectoryTree calls this interface to allow implementations of this interface
+ * to act on a file in the directory tree.
+ */
+public interface FileActor {
+ public void actOnFile(File source, File target, int depth) throws Exception;
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FilePart.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FilePart.java
new file mode 100644
index 0000000000..b6bdf92878
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FilePart.java
@@ -0,0 +1,80 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+
+package org.apache.tuscany.sca.cpp.tools.common;
+
+/**
+ * A piece of C++ source code
+ */
+public class FilePart {
+ public final static int UNKNOWN = 0;
+
+ public final static int COMMENT = 1;
+
+ public final static int METHOD = 2;
+
+ public final static int FIELD = 3;
+
+ public final static int BEGINSCOPE = 4;
+
+ public final static int ENDSCOPE = 5;
+
+ public final static int DIRECTIVE = 6;
+
+ public final static int WHITESPACE = 7;
+
+ public final static int MACRO = 8;
+
+ public final static int CLASSATTRIBUTE = 9;
+
+ public final static int ENUM = 10;
+
+ public final static int PROTOTYPE = 11;
+
+ public final static int TYPEDEF = 12;
+
+ protected String cppsource;
+
+ protected int type;
+
+ FilePart(String s, int type) {
+ cppsource = s;
+ this.type = type;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ int length() {
+ return cppsource.length();
+ }
+
+ public String toString() {
+ return cppsource;
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Headers.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Headers.java
new file mode 100644
index 0000000000..533e1fd14a
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Headers.java
@@ -0,0 +1,167 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class Headers implements FileActor {
+ private ArrayList instanceMethods = new ArrayList();
+
+ private ArrayList staticMethods = new ArrayList();
+
+ private ArrayList allMethods = new ArrayList();
+
+ private ArrayList classNames = new ArrayList();
+
+ private boolean failed = false;
+
+ public void actOnFile(File header, File ignored, int depth)
+ throws Exception {
+ if (Configuration.fileExcluded(header.getName())) {
+ Utils.outputDebugString("excluding " + header + "...");
+ return;
+ }
+
+ Utils.outputDebugString("pre-parsing " + header + "...");
+ FileReader fr = null;
+ try {
+ fr = new FileReader(header);
+ } catch (FileNotFoundException fnfe) {
+ throw fnfe;
+ }
+ BufferedReader inputFile = new BufferedReader(fr);
+
+ try {
+ InputCppSourceCode code = new InputCppSourceCode(inputFile, header
+ .getName());
+ Iterator it = code.getPartIterator();
+ while (it.hasNext()) {
+ FilePart fp = (FilePart) (it.next());
+ if (fp.getType() != FilePart.PROTOTYPE)
+ continue;
+ PrototypePart pp = (PrototypePart) fp;
+ String className = pp.className();
+ if (null == className)
+ continue;
+ String trimClassName = className;
+ if (className.endsWith("::"))
+ trimClassName = className.substring(0,
+ className.length() - 2);
+ if (!classNames.contains(trimClassName))
+ classNames.add(trimClassName);
+
+ Signature sign = new Signature(fp.toString());
+ sign.setClassName(className);
+ //Tuscany
+ sign.setScope(pp.getSignature().getScope());
+ sign.setNamespace(pp.getSignature().getNamespace());
+
+ // "Clean" the signature by stripping off attributes,
+ // semicolons, etc
+ Signature cleaned = new Signature(sign.toStringWithoutAttrs());
+ //Tuscany - problem
+ cleaned.setClassName(className);
+ cleaned.setScope(pp.getSignature().getScope());
+ cleaned.setNamespace(pp.getSignature().getNamespace());
+ //Tuscany - end of problem
+
+
+ if (-1 == sign.getAttributes().indexOf("static"))
+ instanceMethods.add(cleaned);
+ else
+ staticMethods.add(cleaned);
+ }
+ } catch (ParsingException pe) {
+ failed = true;
+ }
+
+ inputFile.close();
+ allMethods.addAll(staticMethods);
+ allMethods.addAll(instanceMethods);
+ }
+
+ public boolean failed() {
+ return failed;
+ }
+
+ public boolean isInstanceMethod(Signature sign) {
+ Iterator it = instanceMethods.iterator();
+ while (it.hasNext()) {
+ Signature s = (Signature) it.next();
+ if (s.equals(sign))
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isStaticMethod(Signature sign) {
+ Iterator it = staticMethods.iterator();
+ while (it.hasNext()) {
+ Signature s = (Signature) it.next();
+ if (s.equals(sign))
+ return true;
+ }
+ return false;
+ }
+
+ public List getMethods(String method) {
+ ArrayList list = new ArrayList();
+ if (null == method)
+ return list;
+
+ Iterator it = allMethods.iterator();
+ while (it.hasNext()) {
+ Signature s = (Signature) it.next();
+ if (method.equals(s.getMethodName()))
+ list.add(s);
+ }
+ return list;
+ }
+
+ /**
+ * Tuscany change - a method to get all the method signatures at once
+ */
+ public List getAllMethods() {
+ ArrayList list = new ArrayList();
+ Iterator it = allMethods.iterator();
+ while (it.hasNext()) {
+ Signature s = (Signature) it.next();
+ list.add(s);
+ }
+ return list;
+ }
+
+ public boolean isClassName(String text) {
+ return classNames.contains(text);
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/InputCppSourceCode.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/InputCppSourceCode.java
new file mode 100644
index 0000000000..235d0a13d8
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/InputCppSourceCode.java
@@ -0,0 +1,425 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.BufferedReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+
+public class InputCppSourceCode {
+
+ private ArrayList parts = new ArrayList();
+
+ private String name;
+
+ public InputCppSourceCode(BufferedReader br, String name) throws Exception {
+ this.name = name;
+
+ String s = null;
+ StringBuffer buff = new StringBuffer();
+ for (int i = 1;; i++) {
+ try {
+ s = br.readLine();
+ } catch (Exception e) {
+ System.err.println("Ignoring exception thrown parsing file "
+ + name + " line number " + i);
+ e.printStackTrace();
+ break;
+ }
+ if (s == null)
+ break;
+ buff.append(s + "\n");
+ }
+ String str = buff.toString();
+
+ // TODO: When checking for rest.startsWith("struct") should
+ // check the next letter after struct is not alphanumeric otherwise
+ // we'll get false matches on a function called structify() for
+ // instance. Also applies to enum, union, public, typedef, etc
+
+ String rest, text = "";
+ int scopedepth = 0;
+ String scope = "public";
+ String currentClass = null;
+ String currentNamespace = null;
+ for (int idx = 0; idx < str.length(); /* No idx++ */
+ ) {
+ rest = str.substring(idx);
+ if (Character.isWhitespace(rest.charAt(0))) {
+ int ridx = 0;
+ while (ridx < rest.length()
+ && Character.isWhitespace(rest.charAt(ridx)))
+ ridx++;
+ text = rest.substring(0, ridx);
+ FilePart fp = new FilePart(text, FilePart.WHITESPACE);
+ parts.add(fp);
+ idx += ridx;
+
+ } else if (rest.startsWith("/*")) {
+ int ridx = rest.indexOf("*/"); // Don't use Utils here
+ text = str.substring(idx, idx + ridx + 2);
+ FilePart fp = new FilePart(text, FilePart.COMMENT);
+ parts.add(fp);
+ idx += text.length();
+
+ } else if (rest.startsWith("//")) {
+ text = str.substring(idx, idx + rest.indexOf("\n"));
+ FilePart fp = new FilePart(text, FilePart.COMMENT);
+ parts.add(fp);
+ idx += text.length();
+
+ } else if (rest.startsWith("#")) {
+ int ridx = rest.indexOf("\n");
+ char c = rest.charAt(ridx - 1);
+ while (-1 != ridx && '\\' == c) {
+ String rest2 = rest.substring(ridx + 1);
+ ridx += rest2.indexOf("\n") + 1;
+ c = rest.charAt(ridx - 1);
+ }
+ text = str.substring(idx, idx + ridx);
+ FilePart fp = new FilePart(text, FilePart.DIRECTIVE);
+ parts.add(fp);
+ idx += text.length();
+
+ } else if (rest.startsWith("}")) {
+ if (scopedepth <= 0) //Tuscany need to increase scopedepth for
+ // namespaces?
+ Utils.rude("Braces do not match", name, lineNo(str, idx),
+ rest.substring(0, rest.indexOf("\n")));
+ else
+ scopedepth--;
+ // TODO: better checking that this brace really ends the class
+ if (0 == scopedepth)
+ currentClass = null;
+ scope = "public";
+ parts.add(new FilePart("}", FilePart.ENDSCOPE));
+ idx++;
+
+ } else if (rest.startsWith(";")) {
+ parts.add(new FilePart(";", FilePart.FIELD));
+ idx++;
+
+ } else if (!Character.isLetter(rest.charAt(0))
+ && '~' != rest.charAt(0) && '_' != rest.charAt(0)) {
+ Utils.rude("Lines must start with a letter ", name, lineNo(str,
+ idx), rest.substring(0, rest.indexOf("\n")));
+
+ } else if (MacroPart.isAMacro(rest)) {
+ MacroPart mp = MacroPart.create(rest);
+ parts.add(mp);
+ idx += mp.length();
+
+ } else if (beginsScope(rest)) {
+
+ //Tuscany a namespace comes in here
+ scopedepth++;
+ text = rest.substring(0, Utils.indexOf(rest, "{") + 1);
+ FilePart fp = new FilePart(text, FilePart.BEGINSCOPE);
+ parts.add(fp);
+ idx += text.length();
+ if (Utils.startsWith(text, "class")) {
+ // TODO: cope with comments here
+ // TODO: split out classes into a ClassPart
+ StringTokenizer st = new StringTokenizer(text,
+ Utils.whitespace + ":");
+ st.nextToken(); // step over "class"
+ while (st.hasMoreTokens()) {
+ String word = st.nextToken();
+ if (Configuration.isAttribute(word))
+ continue;
+ currentClass = word;
+ break;
+ }
+ }
+
+ //Tuscany
+ if (Utils.startsWith(text, "namespace")) {
+ // TODO: cope with comments here
+ StringTokenizer st = new StringTokenizer(text,
+ Utils.whitespace + "{");
+ st.nextToken(); // step over "namespace"
+ String word = "";
+ while (st.hasMoreTokens()) {
+ word = st.nextToken();
+ if (word.equals("{")) {
+ break;
+ }
+
+ }
+
+ if(currentNamespace == null)
+ {
+ currentNamespace = word;
+ }
+ else
+ {
+ currentNamespace += "::" + word;
+ }
+ //We have not got to the class yet
+ //so will need ot deal with the namespace
+ //when we do
+ }
+ // Tuscany end
+
+ } else if (isEnumOrUnion(rest)) {
+ int ridx = Utils.findMatching(rest, '{', '}') + 1;
+ String rest2 = rest.substring(ridx);
+ ridx = idx + ridx + Utils.indexOf(rest2, ';') + 1;
+ text = str.substring(idx, ridx);
+ FilePart fp = new FilePart(text, FilePart.ENUM);
+ parts.add(fp);
+ idx += text.length();
+
+ } else if (scopedepth > 0
+ && (rest.startsWith("public")
+ || rest.startsWith("protected") || rest
+ .startsWith("private"))) {
+ int colon = rest.indexOf(":");
+ if (-1 == colon)
+ Utils.rude("No colon found after public or private ", name,
+ lineNo(str, idx), rest.substring(0, rest
+ .indexOf("\n")));
+ scope = str.substring(idx, idx + colon);
+ text = str.substring(idx, idx + colon + 1);
+ FilePart fp = new FilePart(text, FilePart.CLASSATTRIBUTE);
+ parts.add(fp);
+ idx += text.length();
+
+ } else if (Utils.startsWith(rest, "typedef")) {
+ int semicolon = Utils.indexOf(rest, ';');
+ int brace = Utils.indexOf(rest, '{');
+
+ if (-1 == semicolon)
+ Utils.rude("No semicolon found after typedef", name,
+ lineNo(str, idx), rest.substring(0, rest
+ .indexOf("\n")));
+
+ if (-1 == brace || semicolon < brace) {
+ // Simple typedef
+ text = str.substring(idx, idx + semicolon + 1);
+ } else {
+ // Typedef of a struct, etc
+ int endbrace = Utils.findMatching(rest, '{', '}');
+ String rest2 = rest.substring(endbrace);
+ semicolon = Utils.indexOf(rest2, ';');
+ text = str.substring(idx, idx + endbrace + semicolon + 1);
+ }
+ FilePart fp = new FilePart(text, FilePart.TYPEDEF);
+ parts.add(fp);
+ idx += text.length();
+
+ } else {
+ if (isMethod(rest)) {
+
+ int brace = Utils.indexOf(rest, '{');
+ Signature signature = new Signature(str.substring(idx, idx
+ + brace));
+ if (signature.failed())
+ Utils.rude("Signature parsing failed", name, lineNo(
+ str, idx), signature.getOriginal());
+ if (null != currentClass
+ && null == signature.getClassName())
+ signature.setClassName(currentClass);
+ signature.setScope(scope);
+ signature.setNamespace(currentNamespace);
+
+ String body = rest.substring(brace);
+ int endBrace = Utils.findMatching(body, '{', '}');
+ body = body.substring(0, endBrace + 1);
+ int endIdx = idx + signature.originalLength()
+ + body.length();
+ text = str.substring(idx, endIdx);
+ MethodPart mp = new MethodPart(text, signature, body);
+ parts.add(mp);
+ idx += text.length();
+
+ } else if (isField(rest)) {
+ int semicolon = Utils.indexOf(rest, ';');
+ text = str.substring(idx, idx + semicolon + 1);
+ FilePart fp = new FilePart(text, FilePart.FIELD);
+ parts.add(fp);
+ idx += text.length();
+
+ } else if (isPrototype(rest)) {
+ int semicolon = Utils.indexOf(rest, ';');
+ text = str.substring(idx, idx + semicolon + 1);
+ PrototypePart pp = new PrototypePart(text, currentClass, currentNamespace);
+ pp.setScope(scope);
+ parts.add(pp);
+ idx += text.length();
+
+ } else {
+ //TODO other file parts here - not sure if there are any
+ // others?
+ Utils.rude("Unrecognised file part", name,
+ lineNo(str, idx), rest.substring(0, rest
+ .indexOf("\n")));
+ } // end if
+ } // end if
+ } // end for
+ }
+
+ public Iterator getPartIterator() {
+ return parts.iterator();
+ }
+
+ private int lineNo(String s, int idx) {
+ int n = 0;
+ for (int i = 0; i < idx && i < s.length(); i++)
+ if ('\n' == s.charAt(i))
+ n++;
+ return n;
+ }
+
+ /**
+ * Find out whether we are defining a class, struct or extern "C" which may
+ * contain function implementations. These will have braces which begin a
+ * new scope. Ignore function prototypes that return a struct. struct mystr {
+ * int f1; }; struct mystr func(); struct mystr func() { struct mystr a;
+ * return a; }
+ */
+ private static boolean beginsScope(String s) throws ParsingException {
+ if (isMethod(s))
+ return false;
+
+ int brace = Utils.indexOf(s, '{');
+ int semicolon = Utils.indexOf(s, ';');
+
+ // Return false for class prototypes, but true for class definitions.
+ if (Utils.startsWith(s, "class")) {
+ if (-1 == brace)
+ return false;
+ if (-1 == semicolon)
+ return true;
+ return brace < semicolon;
+ }
+
+ if (Utils.startsWith(s, "struct")) {
+ if (-1 == brace || -1 == semicolon)
+ return false;
+ return brace < semicolon;
+ }
+
+ //Tuscany handle namespace for prototypes
+ //in a similar way to "class"
+ if (Utils.startsWith(s, "namespace")) {
+ if (-1 == brace || -1 == semicolon)
+ return false;
+ return brace < semicolon;
+ }
+
+ return startsWithExternScope(s);
+ }
+
+ /**
+ * There are 4 types of extern ... extern int field; extern int func();
+ * extern "C" int func() { return 2; } extern "C" { int func() { return 2; } }
+ * This method should return true only for the last of these three examples
+ * since only the last one creates a new scope using braces.
+ */
+ private static boolean startsWithExternScope(String s)
+ throws ParsingException {
+ if (!s.startsWith("extern"))
+ return false;
+
+ int brace = Utils.indexOf(s, '{');
+ int semicolon = Utils.indexOf(s, ';');
+ int bracket = Utils.indexOf(s, '(');
+
+ if (-1 == brace)
+ return false;
+ return (-1 == semicolon || brace < semicolon)
+ && (-1 == bracket || brace < bracket);
+ }
+
+ /**
+ * Find out whether we are defining an enum or union which will contain
+ * braces. Ignore function prototypes that return an enum or union. enum
+ * colour { red, blue }; enum colour func(); enum colour func() { return
+ * colour.red; }
+ */
+ private static boolean isEnumOrUnion(String s) throws ParsingException {
+ if ((!Utils.startsWith(s, "enum") && !Utils.startsWith(s, "union"))
+ || isMethod(s))
+ return false;
+
+ int brace = Utils.indexOf(s, '{');
+ int semicolon = Utils.indexOf(s, ';');
+ return -1 != brace && (-1 == semicolon || brace < semicolon);
+ }
+
+ /**
+ * Rules to recognise fields and methods...
+ *
+ * Fields must contain a semicolon Methods may or may not contain a
+ * semicolon Prototypes must contain a semicolon Fields may or may not
+ * contain a brace (array initialisers do) Methods must contain a brace
+ * Prototypes must not contain a brace Fields may or may not contain a
+ * bracket (casts do) Methods must contain a bracket Prototypes must contain
+ * a bracket
+ *
+ * It's a method if it contains a bracket and then a brace before the first
+ * semicolon (if there is a semicolon). It's a prototype if it's not a
+ * method and it contains brackets before a semicolon. It's a field if it's
+ * not a method or a prototype and it contains a semicolon. If it's not a
+ * field, a method or a prototype and we haven't recognised it previously
+ * then it's an error.
+ */
+ private static boolean isMethod(String s) throws ParsingException {
+ int semicolon = Utils.indexOf(s, ';');
+ int brace = Utils.indexOf(s, '{');
+ int bracket = Utils.indexOf(s, '(');
+
+ return (-1 != bracket && -1 != brace && bracket < brace && (-1 == semicolon || brace < semicolon));
+ }
+
+ private static boolean isPrototype(String s) throws ParsingException {
+ int semicolon = Utils.indexOf(s, ';');
+ int bracket = Utils.indexOf(s, '(');
+ return !isMethod(s) && -1 != semicolon && -1 != bracket
+ && bracket < semicolon;
+ }
+
+ private static boolean isField(String s) throws ParsingException {
+ int semicolon = Utils.indexOf(s, ';');
+ return !isMethod(s) && !isPrototype(s) && -1 != semicolon;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String toString() {
+ StringBuffer text = new StringBuffer();
+ for (int i = 0; i < parts.size(); i++) {
+ text.append(((FilePart) (parts.get(i))).toString());
+ }
+ return text.toString();
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MacroPart.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MacroPart.java
new file mode 100644
index 0000000000..317ad2fc44
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MacroPart.java
@@ -0,0 +1,87 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+
+/*
+ * A C or C++ macro as it is used in the source code
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+class MacroPart extends FilePart {
+ /**
+ * Factory method to create a MacroPart.
+ *
+ * @param s
+ * unparsed source code which may start with a define or macro.
+ */
+ static MacroPart create(String s) {
+ String orig = getOriginalText(s);
+ if (null == orig)
+ return null;
+ return new MacroPart(orig);
+ }
+
+ MacroPart(String s) {
+ super(s, FilePart.MACRO);
+ }
+
+ /**
+ * @param s
+ * unparsed source code which may start with a define or macro.
+ * @return all of s up to the end of the define or macro.
+ */
+ private static String getOriginalText(String s) {
+ String name = getName(s);
+ int len = name.length();
+ if (null == name)
+ return null;
+ else if (Configuration.isDefine(name)) {
+ return s.substring(0, len);
+ } else if (Configuration.isMacro(name)) {
+ String rest = s.substring(len);
+ len += Utils.findMatching(rest, '(', ')');
+ return s.substring(0, len + 1);
+ } else
+ return null;
+ }
+
+ static boolean isAMacro(String s) {
+ if (s == null || 0 == s.length())
+ return false;
+ String name = getName(s);
+ return Configuration.isMacro(name) || Configuration.isDefine(name);
+ }
+
+ private static String getName(String s) {
+ int i;
+ for (i = 0; i < s.length(); i++)
+ if (!Character.isLetterOrDigit(s.charAt(i)) && '_' != s.charAt(i))
+ break;
+ if (s.length() == i)
+ return null;
+ return s.substring(0, i);
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MethodPart.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MethodPart.java
new file mode 100644
index 0000000000..a25610c1f9
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MethodPart.java
@@ -0,0 +1,133 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.util.ArrayList;
+
+/**
+ * A C or C++ method from a piece of source code. The method has a signature and
+ * a body (the bit between the braces).
+ */
+public class MethodPart extends FilePart {
+ private Signature signature;
+
+ private String body;
+
+ MethodPart(String s, Signature signature, String body) {
+ super(s, METHOD);
+ this.signature = signature;
+ this.body = body;
+ }
+
+ public Signature getSignature() {
+ return signature;
+ }
+
+ public String getOriginalSignature() {
+ return signature.getOriginal();
+ }
+
+ /**
+ * Returns the method body as code snippets, each ending with a place where
+ * a trace statement belongs. The end of the first code snippet is where the
+ * entry trace should go. The end of every other snippet is a return from
+ * the method.
+ */
+ public BodyPart[] getBodyParts() throws ParsingException {
+ String b = body; // Don't alter field member
+ if (b.startsWith("{"))
+ b = b.substring(1);
+
+ // Add in trace exit at all the return statements in the method.
+ ArrayList al = new ArrayList();
+ int idxR = Utils.indexOf(b, "return");
+ int idxC = Utils.indexOf(b, "catch");
+ while (-1 != idxR || -1 != idxC) {
+ if (-1 == idxC || (-1 != idxR && idxR < idxC)) {
+ String frag = b.substring(0, idxR);
+ String rest = b.substring(idxR + "return".length());
+
+ int semicolon = Utils.indexOf(rest, ';');
+ if (-1 == semicolon)
+ Utils.rude("Missing semicolon in " + signature);
+ String retVal = rest.substring(0, semicolon);
+ BodyPart bp = new BodyPart(frag, retVal);
+ al.add(bp);
+ b = b.substring(idxR + "return".length() + retVal.length() + 1);
+ } else {
+ String frag = b.substring(0, idxC);
+ String rest = b.substring(idxC);
+
+ int brace = Utils.indexOf(rest, "{");
+ if (-1 == brace)
+ Utils.rude("Missing open brace in " + signature);
+ Signature signature = new Signature(rest.substring(0, brace));
+ frag = frag + rest.substring(0, brace + 1);
+ BodyPart bp = new BodyPart(frag, signature.getParameters()[0]);
+ al.add(bp);
+ b = rest.substring(brace + 1);
+ }
+ idxR = Utils.indexOf(b, "return");
+ idxC = Utils.indexOf(b, "catch");
+ }
+
+ // Add in trace exit before the last } if there are no returns in
+ // the method or there is code after the last return and the method
+ // returns void.
+ // int f1(){try{return f2();}catch(Exception& e){throw;}}
+ // has code after the last return but having a traceexit before the
+ // last brace wouldn't compile since the method returns an int. We
+ // cope with this by only adding in a traceexit before the last brace
+ // if the method returns void. That may mean we add in an unreachable
+ // traceexit which may give a compiler warning, but that should be
+ // benign.
+ //
+ // TODO: Not quite good enough for
+ // void f(int a){if(a){printf("a");}else{printf("!a");return;}}
+ // as a trace exit is needed before the last } in case a>0 but
+ // void f(int a){if(a){printf("a");return;}else{printf("!a");return;}}
+ // would give compiler warnings about unreachable code if a trace
+ // exit is added before the last brace. This could be tricky to fix.
+ if ((0 == al.size() || -1 != Utils.indexOf(b, ';'))
+ && null == signature.getReturnType().getType()) {
+
+ int last = b.lastIndexOf('}');
+ if (-1 == last)
+ Utils.rude("Missing end brace in " + signature);
+ String b2 = b.substring(0, last);
+ al.add(new BodyPart(b2));
+ b = b.substring(last);
+ }
+
+ // The final body part is the last }
+ al.add(new BodyPart(b));
+
+ BodyPart[] bps = new BodyPart[al.size()];
+ System.arraycopy(al.toArray(), 0, bps, 0, al.size());
+ return bps;
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Options.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Options.java
new file mode 100644
index 0000000000..6e951f03de
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Options.java
@@ -0,0 +1,164 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ *
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Command line options passed to a tool's main program. All command line
+ * options should begin with a dash "-". Some command line options take a value
+ * which is the next parameter after the option. Others do not.
+ */
+public class Options {
+ static HashMap pairs = new HashMap();
+
+ static List values = new ArrayList();
+
+ /**
+ * No one constructs this class.
+ */
+ private Options() {
+ }
+
+ public static void reset() {
+ pairs = new HashMap();
+ values = new ArrayList();
+ }
+
+ /**
+ * Initialises the options based on the args passed to main
+ */
+ public static void set(String args[]) {
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].startsWith("-")) {
+ if ((i + 1 <= args.length - 1) && // next one is testable
+ !args[i + 1].startsWith("-") // and it starts with a "-"
+ ) {
+ String key = args[i];
+ Object pairValue = pairs.get(key);
+ if (null == pairValue) {
+ pairs.put(args[i], args[i + 1]);
+ } else if (pairValue instanceof String) {
+ List l = new ArrayList();
+ l.add(pairValue);
+ l.add(args[i + 1]);
+ pairs.put(key, l);
+ } else if (pairValue instanceof List) {
+ ((List) pairValue).add(args[i + 1]);
+ }
+ i++; // Step over value for this key
+ } else
+ values.add(args[i]);
+ }
+ }
+ }
+
+ public static Object getOption(String key) {
+ return pairs.get(key);
+ }
+
+ static boolean isOptionSet(String key) {
+ return values.contains(key) || null!=pairs.get(key);
+ }
+
+ /**
+ * This option will cause scagen to print out messages
+ * about the artefacts it is processing
+ * @return
+ */
+ public static boolean verbose() {
+ return isOptionSet("-verbose");
+ }
+
+ /**
+ * This option will cause scagen to print out some
+ * basic internal log type messages
+ * @return
+ */
+ public static boolean debug() {
+ return isOptionSet("-debug");
+ }
+
+ /**
+ * This option will cause scagen to print out some
+ * text that can be used or pasted into a command
+ * file to copy all the relevant artefacts from
+ * where they are found or generated to a specific
+ * deployment location
+ *
+ * @return
+ */
+ public static boolean deploy() {
+ return isOptionSet("-deploy");
+ }
+
+ /**
+ * This option will prevent scagen from actually writing out
+ * the generated files. It is useful if used in conjunction
+ * with the "-deploy" option.
+ * @return
+ */
+ public static boolean noGenerate() {
+ return isOptionSet("-nogenerate");
+ }
+
+ /**
+ * This option is useful only when used in conjunction with
+ * the "-deploy" option. It changes the output to be more like the
+ * source code of a command script to copy the files to a
+ * specific place.
+ * @return
+ */
+ public static boolean outputCommand() {
+ return isOptionSet("-outputCommand");
+ }
+
+ /**
+ * This option is useful only when used in conjunction with
+ * the "-deploy" option. It changes the output to be a simple
+ * list of artefacts. It has no effect if the "-outputCommand"
+ * option is set.
+ *
+ * @return
+ */
+ public static boolean list() {
+ return isOptionSet("-list");
+ }
+
+ /**
+ * This option is maintained for compatibility with the
+ * original package source. It is not used by new scagen code.
+ *
+ * @return
+ */
+ public static boolean quiet() {
+ return isOptionSet("-quiet");
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Parameter.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Parameter.java
new file mode 100644
index 0000000000..2d98e0a836
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Parameter.java
@@ -0,0 +1,216 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ *
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * A parameter from a method signature. The parameter is the datatype plus its
+ * name but not its value.
+ */
+public class Parameter {
+ private ArrayList type = new ArrayList();
+
+ private String name = null;
+
+ private boolean failed = false;
+
+ /**
+ * Defaults to a parameter in a parameter list so it HAS a parameter name in
+ * it
+ */
+ Parameter(List parts) {
+ this(parts, false);
+ }
+
+ /**
+ * A parameter which is a return type does not have a parameter name.
+ * Parameters in a parameter list do have parameter names embedded in them
+ */
+ Parameter(List parts, boolean isRetType) {
+ if (parts == null || parts.size() == 0)
+ return;
+
+ // Tuscany: The original code below from apache axis blocks int
+ // getCustomer(long)
+ // i.e. no spaces in parameter list.
+ // We do not need to deal with "..." as parameters to SCS methods.
+ //
+ // if (!isRetType && parts.size() == 1) {
+ // if ("...".equals(parts.get(0))) {
+ // type.add("...");
+ // name = "";
+ // } else if (!"void".equals(parts.get(0)))
+ // failed = true; // Seems like bad C++ code here
+ // return;
+ // }
+
+ if (isRetType) {
+ Iterator it = parts.iterator();
+ while (it.hasNext())
+ type.add(it.next());
+
+ // Some methods return have void on their signature and others
+ // have nothing. So to make them both the same, if a method
+ // doesn't return anything make type null.
+ // TODO: This assumption is wrong - methods that return nothing
+ // default to returning an int!
+ if (1 == type.size() && "void".equals(type.get(0)))
+ type = new ArrayList();
+
+ } else {
+ // Cope with array subscripts [] after the name
+ int arrIdx = -1;
+ for (int i = 0; i < parts.size(); i++) {
+ String tok = (String) parts.get(i);
+ if ("[".equals(tok)) {
+ arrIdx = i;
+ break;
+ }
+ }
+
+ // Find the name
+ int nameIdx = parts.size() - 1;
+ if (-1 != arrIdx)
+ nameIdx = arrIdx - 1;
+
+ // Even in real method declarations, parameters may not have a name
+ boolean noName = false;
+ name = (String) parts.get(nameIdx);
+ // Tuscany: The original code below from apache axis
+ // was updated to work with signatures of
+ // the form fn(int) a non-named, no-space, parameter list.
+ // if (Utils.cPrimitives.contains(name) ||
+ // Utils.cTypeQualifiers.contains(name) )
+ //
+ if (Utils.cPrimitives.contains(name)
+ || Utils.cTypeQualifiers.contains(name)
+ || parts.size() == 1)
+ noName = true;
+
+ if (noName) {
+ name = null;
+ for (int i = 0; i < parts.size(); i++)
+ type.add(parts.get(i));
+ } else {
+ // Construct the type
+ for (int i = 0; i < nameIdx; i++)
+ type.add(parts.get(i));
+
+ if (-1 != arrIdx)
+ for (int i = arrIdx; i < parts.size(); i++)
+ type.add(parts.get(i));
+ }
+ }
+ }
+
+ public boolean failed() {
+ return failed;
+ }
+
+ public String getType() {
+ String s = null;
+ Iterator it = type.iterator();
+ while (it.hasNext()) {
+ String next = (String) it.next();
+ if (null == s)
+ s = next;
+ else if ("*".equals(next) || "&".equals(next))
+ s += next;
+ else
+ s += " " + next;
+ }
+ return s;
+ }
+
+ public String getTypeWithoutConst() {
+ String s = null;
+ Iterator it = type.iterator();
+ while (it.hasNext()) {
+ String next = (String) it.next();
+ if ("const".equals(next))
+ continue;
+ else if (null == s)
+ s = next;
+ else if ("*".equals(next) || "&".equals(next))
+ s += next;
+ else
+ s += " " + next;
+ }
+ return s;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public boolean isVoid() {
+ return 0 == type.size();
+ }
+
+ public boolean isDotDotDot() {
+ return 1 == type.size() && "...".equals(type.get(0));
+ }
+
+ /**
+ * For two parameters to match their types must match or both be null, but
+ * the parameters names don't have to match. Just because a parameter is
+ * called something different in a header file as in the the source file
+ * doesn't mean it's a different parameter.
+ */
+ public boolean equals(Object o) {
+ if (null == o || !(o instanceof Parameter))
+ return false;
+ Parameter that = (Parameter) o;
+ if (type.size() != that.type.size())
+ return false;
+ for (int i = 0; i < type.size(); i++) {
+ String s1 = (String) type.get(i);
+ String s2 = (String) that.type.get(i);
+ if (!Utils.safeEquals(s1, s2))
+ return false;
+ }
+ return true;
+ }
+
+ public String toString() {
+ if (0 == type.size())
+ return "void";
+ if (null == name)
+ return getType();
+ return getType() + " " + name;
+ }
+
+ public Iterator iterator() {
+ if (null == type)
+ return null;
+ return type.iterator();
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/ParsingException.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/ParsingException.java
new file mode 100644
index 0000000000..876d2dc3e0
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/ParsingException.java
@@ -0,0 +1,48 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ *
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+public class ParsingException extends Exception {
+
+ public ParsingException() {
+ super();
+ }
+
+ public ParsingException(String message) {
+ super(message);
+ }
+
+ public ParsingException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ParsingException(Throwable cause) {
+ super(cause);
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/PrototypePart.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/PrototypePart.java
new file mode 100644
index 0000000000..e51b2d781c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/PrototypePart.java
@@ -0,0 +1,56 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ *
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+/**
+ * A function prototype in an include file and possibly in a class definition.
+ */
+public class PrototypePart extends FilePart {
+ private Signature signature;
+
+ public PrototypePart(String s, String className, String namespace) {
+ super(s, PROTOTYPE);
+ signature = new Signature(s);
+ if (null != className)
+ signature.setClassName(className);
+ if (null != namespace && namespace.length()>0)
+ signature.setNamespace(namespace);
+ }
+
+ String className() {
+ return signature.getClassName();
+ }
+
+ public Signature getSignature() {
+ return signature;
+ }
+
+ public void setScope(String scope) {
+ signature.setScope(scope);
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Signature.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Signature.java
new file mode 100644
index 0000000000..d7052b7843
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Signature.java
@@ -0,0 +1,506 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+ * Branched from the original class that was also contributed to the
+ * org.apache.axis.tools.common package.
+ *
+ */
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * A C or C++ method signature with the ability to parse it. TODO: properly
+ * support variable length argument lists using "..." TODO: passing or returning
+ * function pointers (hopefully not needed) TODO: Cope with ~ <space>Classname()
+ */
+public class Signature {
+ private String originalText;
+
+ private String attributes;
+
+ private String className = null;
+
+ private String namespace = null;
+
+ private String methodName = null;
+
+ private Parameter returnType = null;
+
+ private Parameter[] params = null;
+
+ private String trailingAttributes;
+
+ private String scope = "public";
+
+ private boolean failed = false;
+
+ private boolean traceable = true;
+
+ private final static Set knownAttrs = new HashSet(Arrays
+ .asList(new Object[] { "public", "private", "extern", "\"C\"",
+ "virtual", "static", "inline" }));
+
+ private final static Set specialOperators = new HashSet(
+ Arrays.asList(new Object[] { "(", ")", "*", ",", "&", "]", "[",
+ "=", "~" }));
+
+ /**
+ * Takes an unparsed signature string and parses it.
+ *
+ * TODO: Should optionally pass in the className here in case it's an inline
+ * method implementation inside the class{}. Just so the className comes out
+ * in the trace.
+ */
+ Signature(String s) {
+ originalText = s;
+
+ try {
+ List tokens = tokenise(s);
+
+ ArrayList alAttrs = new ArrayList();
+ ArrayList alName = new ArrayList();
+ ArrayList alParms = new ArrayList();
+ ArrayList alTrailAttrs = new ArrayList();
+ ArrayList alInits = new ArrayList();
+ if (!splitUp(tokens, alAttrs, alName, alParms, alTrailAttrs,
+ alInits)) {
+ failed = true;
+ return;
+ }
+
+ parseAttributes(alAttrs);
+ parseNameAndRetType(alName);
+ parseParameters(alParms);
+ parseTrailingAttributes(alTrailAttrs);
+
+ // Ignore any tokens after the ) since these are (hopefully)
+ // constructor initialisers
+
+ traceable = !Configuration.methodExcluded(className, methodName);
+ } catch (NullPointerException npe) {
+ failed = true;
+ traceable = false;
+ }
+ }
+
+ /**
+ * Parse the signature into tokens. This removes whitespace and comments and
+ * separates out "*", ",", "(", ")", "&", "[" and "]".
+ */
+ private static List tokenise(String s) {
+ ArrayList tokens = new ArrayList();
+ String tok = null;
+ boolean space = true;
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (Character.isWhitespace(c)) {
+ space = true;
+ continue;
+ }
+ if (space) {
+ if (tok != null)
+ tokens.add(tok);
+ tok = "" + c;
+ } else
+ tok += c;
+ space = false;
+
+ if (tok.endsWith("/*")) {
+ String sub = s.substring(i);
+ int endcomm = sub.indexOf("*/");
+ if (endcomm == -1)
+ break;
+ i += endcomm + 1;
+ if (tok.equals("/*"))
+ tok = "";
+ else
+ tok = tok.substring(0, tok.length() - 2);
+ continue;
+ }
+
+ if (tok.endsWith("//")) {
+ String sub = s.substring(i);
+ int endcomm = sub.indexOf("\n");
+ if (endcomm == -1)
+ break;
+ i += endcomm;
+ if (tok.equals("//"))
+ tok = "";
+ else
+ tok = tok.substring(0, tok.length() - 1);
+ continue;
+ }
+
+ if (tok.endsWith("::"))
+ space = true;
+
+ String sc = "" + c;
+ if (specialOperators.contains(sc)) {
+ if (!tok.equals(sc)) {
+ tokens.add(tok.substring(0, tok.length() - 1));
+ tok = sc;
+ }
+ space = true;
+ }
+ }
+ tokens.add(tok);
+ return tokens;
+ }
+
+ /**
+ * Split up a tokenised method signature into a list of attributes, a list
+ * of name and return type tokens, a list of parameter tokens and a list of
+ * initialiser tokens.
+ */
+ private static boolean splitUp(List tokens, List attrs, List nameAndRet,
+ List parms, List trailAttrs, List inits) {
+
+ // nameStart points to the start of the return type if there is one
+ // else the start of the method name
+ int nameStart;
+ for (nameStart = 0; nameStart < tokens.size(); nameStart++) {
+ String tok = (String) (tokens.get(nameStart));
+ if (!knownAttrs.contains(tok) && !Configuration.isAttribute(tok))
+ break;
+ }
+ if (nameStart == tokens.size())
+ return false;
+
+ // initStart points to the initialisers, or thrown exceptions after
+ // the parameter list. throw is a keyword so we can safely search for
+ // it.
+ int initStart = tokens.size();
+ for (int i = nameStart; i < tokens.size(); i++) {
+ String tok = (String) tokens.get(i);
+ if ((tok.startsWith(":") && !tok.startsWith("::"))
+ || "throw".equals(tok))
+ initStart = i;
+ }
+
+ int parmEnd;
+ for (parmEnd = initStart - 1; parmEnd > nameStart; parmEnd--)
+ if (")".equals(tokens.get(parmEnd)))
+ break;
+ if (parmEnd == nameStart)
+ return false;
+
+ int parmStart = parmEnd;
+ for (parmStart = parmEnd; parmStart > nameStart; parmStart--)
+ if ("(".equals(tokens.get(parmStart)))
+ break;
+
+ for (int i = 0; i < tokens.size(); i++) {
+ Object tok = tokens.get(i);
+ if (i < nameStart || Configuration.isAttribute((String) tok))
+ attrs.add(tok);
+ else if (i < parmStart)
+ nameAndRet.add(tok);
+ else if (i <= parmEnd)
+ parms.add(tok);
+ else if (i < initStart)
+ trailAttrs.add(tok);
+ else
+ inits.add(tok);
+ }
+ return true;
+ }
+
+ private void parseAttributes(List list) {
+ attributes = new String();
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ if (attributes.length() > 0)
+ attributes += " ";
+ String next = (String) it.next();
+
+ //Tuscancy
+ //the scope is not present in the attributes
+ //but is set later in the InputCppSource contructor
+ if ("public".equals(next) || "protected".equals(next)
+ || "private".equals(next))
+ scope = next;
+ attributes += next;
+ }
+ }
+
+ private void parseNameAndRetType(List list) {
+ int size = list.size();
+ int idx;
+ // "operator" is a key word so if it's present we know we're
+ // dealing with operator overloading. The operator that's been
+ // overloaded might have been split up into multiple tokens.
+ for (idx = 0; idx < size; idx++)
+ if ("operator".equals(list.get(idx)))
+ break;
+
+ if (idx < size) {
+ methodName = "";
+ for (int i = idx; i < size; i++)
+ methodName += (String) list.get(i);
+ } else { // No operator overloading
+ methodName = "" + list.get(size - 1);
+ idx = size - 1;
+ }
+
+ // If it's a destructor, the "~" will be split out into a separate
+ // token, so add it onto the methodName here.
+ if (idx > 0 && "~".equals(list.get(idx - 1))) {
+ methodName = "~" + methodName;
+ idx--;
+ }
+
+ // The class name comes before the method name
+ while (idx > 0 && ((String) list.get(idx - 1)).endsWith("::")) {
+ if (null == className)
+ className = (String) list.get(idx - 1);
+ else
+ className = (String) list.get(idx - 1) + className;
+ idx--;
+ }
+
+ // Whatever's left before the classname/methodname must be the
+ // return type
+ ArrayList retParm = new ArrayList();
+ for (int i = 0; i < idx; i++)
+ retParm.add(list.get(i));
+
+ returnType = new Parameter(retParm, true);
+ }
+
+ /**
+ * Constructs the parameter list
+ */
+ private void parseParameters(List list) {
+ ArrayList alParams = new ArrayList();
+ Iterator it = list.iterator();
+ String token = (String) it.next(); // step over the (
+ while (it.hasNext() && !")".equals(token)) {
+ token = (String) it.next();
+
+ int template = 0; // Depth of template scope
+ boolean foundEquals = false;
+ // Ignore default value for an optional parameter
+ ArrayList parm = new ArrayList();
+ while (!token.equals(")") && (!token.equals(",") || template > 0)) {
+ if (token.equals("="))
+ foundEquals = true;
+ if (!foundEquals)
+ parm.add(token);
+ if (contains(token, "<"))
+ template++;
+ if (contains(token, ">"))
+ template--;
+ token = (String) it.next();
+ }
+
+ // No parameters so break out
+ if (token.equals(")") && 0 == parm.size())
+ break;
+
+ Parameter p = new Parameter(parm);
+ if (p.failed()) {
+ failed = true;
+ return;
+ }
+
+ // Copes with void func(void)
+ if (!p.isVoid())
+ alParams.add(p);
+ }
+
+ int size = alParams.size();
+ if (size > 0) {
+ params = new Parameter[size];
+ System.arraycopy(alParams.toArray(), 0, params, 0, size);
+ }
+ }
+
+ private void parseTrailingAttributes(List list) {
+ trailingAttributes = new String();
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ if (trailingAttributes.length() > 0)
+ trailingAttributes += " ";
+ trailingAttributes += (String) it.next();
+ }
+ }
+
+ public String getOriginal() {
+ return originalText;
+ }
+
+ public int originalLength() {
+ return originalText.length();
+ }
+
+ public boolean failed() {
+ return failed;
+ }
+
+ public String getAttributes() {
+ return attributes;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ /**
+ * @param namespace The namespace to set.
+ */
+ public void setNamespace(String namespace) {
+ this.namespace = namespace;
+ }
+
+ /**
+ * @return Returns the namespace.
+ */
+ public String getNamespace() {
+ return namespace;
+ }
+
+ public String getTrimClassName() {
+ return trimClassName(className);
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public Parameter getReturnType() {
+ return returnType;
+ }
+
+ public Parameter[] getParameters() {
+ return params;
+ }
+
+ public boolean isConstructor() {
+ return className != null && methodName != null
+ && trimClassName(className).equals(methodName);
+ }
+
+ public boolean isDestructor() {
+ return className != null && methodName != null
+ && methodName.startsWith("~")
+ && methodName.endsWith(trimClassName(className));
+ }
+
+ private static String trimClassName(String name) {
+ if (name.endsWith("::"))
+ return name.substring(0, name.length() - 2);
+ return name;
+ }
+
+ void setClassName(String className) {
+ if (null == className)
+ return;
+ if (!className.endsWith("::"))
+ className += "::";
+ this.className = className;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ /**
+ * Sets the scope, but only if the scope is not set by an explicit attribute
+ * in the signature.
+ */
+ public void setScope(String scope) {
+ if (-1 == attributes.indexOf(this.scope))
+ this.scope = scope;
+ }
+
+ /**
+ * Should this method be traced?
+ */
+ public boolean traceable() {
+ return traceable;
+ }
+
+ private static boolean contains(String src, String tgt) {
+ if (src == null || tgt == null)
+ return false;
+ if (-1 == src.indexOf(tgt))
+ return false;
+ return true;
+ }
+
+ public boolean equals(Object obj) {
+ if (null == obj || !(obj instanceof Signature))
+ return false;
+ Signature that = (Signature) obj;
+ if (!Utils.safeEquals(className, that.className))
+ return false;
+ if (!Utils.safeEquals(methodName, that.methodName))
+ return false;
+ if (!Utils.safeEquals(returnType, that.returnType))
+ return false;
+ if (null == params && null == that.params)
+ return true;
+ if (null != params && null == that.params)
+ return false;
+ if (null == params && null != that.params)
+ return false;
+ if (params.length != that.params.length)
+ return false;
+ for (int i = 0; i < params.length; i++)
+ if (!Utils.safeEquals(params[i], that.params[i]))
+ return false;
+ return true;
+ }
+
+ public String toStringWithoutAttrs() {
+ String s = new String();
+ if (returnType != null)
+ s += returnType + " ";
+ if (className != null)
+ s += className;
+ s += methodName + "(";
+ for (int i = 0; params != null && i < params.length; i++) {
+ if (i > 0)
+ s += ", ";
+ s += params[i].toString();
+ }
+ s += ")";
+ return s;
+ }
+
+ public String toString() {
+ String s = attributes;
+ if (attributes.length() > 0)
+ s += " ";
+ s += toStringWithoutAttrs();
+ if (trailingAttributes.length() > 0)
+ s += " " + trailingAttributes;
+ return s;
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Utils.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Utils.java
new file mode 100644
index 0000000000..4bc0a455e7
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Utils.java
@@ -0,0 +1,548 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+/*
+* Branched from the original class that was also contributed to the
+* org.apache.axis.tools.common package.
+*
+*/
+package org.apache.tuscany.sca.cpp.tools.common;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+//Apache Common Logging
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+
+/**
+* Static utility methods. Some of these methods are similar to the methods on
+* java.lang.String except they are aware of C/C++ comments and string literals.
+*
+* TODO: Many of these methods would perform better using StringBuffer not
+* String
+*/
+public final class Utils {
+ // All the C primitive data types
+ public final static Set cPrimitives = new HashSet(Arrays
+ .asList(new Object[] { "void", "byte", "char", "unsigned",
+ "signed", "int", "short", "long", "double", "float",
+ "struct", "class", "enum", "union" }));
+
+ // All the qualifiers that can affect C types
+ public final static Set cTypeQualifiers = new HashSet(
+ Arrays.asList(new Object[] { "(", ")", "*", ",", "&", "]", "[",
+ "const" }));
+
+ public final static String whitespace = " \t\r\n";
+
+ //private static Log log = LogFactory.getLog(CLASS.class);
+
+ /**
+ * Never instantiate this class
+ */
+ private Utils() {
+ }
+
+ /**
+ * Is this string all whitespace?
+ */
+ static boolean isSpace(String s) {
+ for (int i = 0; i < s.length(); i++)
+ if (!Character.isWhitespace(s.charAt(i)))
+ return false;
+ return true;
+ }
+
+ // TODO look for other trailing chars like { (because of class{)
+ static boolean startsWith(String source, String target) {
+ if (source == null || target == null)
+ return false;
+ if (!source.startsWith(target))
+ return false;
+ if (source.length() == target.length())
+ return true;
+ if (Character.isWhitespace(source.charAt(target.length())))
+ return true;
+ return false;
+ }
+
+ /**
+ * Performs a C-aware version of String.indexOf(char) in that it skips
+ * characters in string literals and comments.
+ */
+ static int indexOf(String s, char c) throws ParsingException {
+ if ('"' == c)
+ rude("Utils.indexOf cannot be passed quotes");
+
+ for (int i = 0; i < s.length(); i++) {
+ if (s.charAt(i) == c)
+ return i;
+
+ i = skip(s.substring(i), i);
+ if (-1 == i)
+ return -1;
+ }
+ return -1;
+ }
+
+ /**
+ * Performs a C-aware version of String.indexOf(String) in that it skips
+ * characters in string literals and comments and makes sure that the target
+ * string is not embedded in a longer word.
+ */
+ static int indexOf(String s, String t) {
+ char t0 = t.charAt(0);
+ for (int i = 0; i < s.length(); i++) {
+ if (s.charAt(i) == t0
+ && s.substring(i).startsWith(t)
+ && (0 == i || !Character.isLetterOrDigit(s.charAt(i - 1)))
+ && (s.length() == (i + t.length()) || !Character
+ .isLetterOrDigit(s.charAt(i + t.length()))))
+ return i;
+
+ i = skip(s.substring(i), i);
+ if (-1 == i)
+ return -1;
+ }
+ return -1;
+ }
+
+ /**
+ * Matches braces or quotes and is C-aware. It skips characters in string
+ * literals and comments.
+ */
+ static int findMatching(String s, char c1, char c2) {
+ int depth = 0;
+ for (int i = 0; i < s.length(); i++) {
+ if (s.charAt(i) == c1)
+ depth++;
+ else if (s.charAt(i) == c2) {
+ depth--;
+ if (depth == 0)
+ return i;
+ } else {
+ i = skip(s.substring(i), i);
+ if (-1 == i)
+ return -1;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Failed to parse the source code for some reason. This method prints out a
+ * suitably rude message, and then what? I haven't quite decided yet.
+ *
+ * TODO: Do something sensible here like throw an Exception which will give
+ * up on this file completely and tidy up the output file. It may be just
+ * too dangerous to try to carry on. But we need to fail in such a way that
+ * the build system knows that we've failed for this file and can build this
+ * file without trace.
+ */
+ public static void rude(String reason, String filename, int lineno,
+ String codefragment) throws ParsingException {
+
+ String text = "Bad C++ code!! ";
+ if (reason != null)
+ text += reason;
+ if (filename != null)
+ text += " " + filename + " lineno=" + lineno;
+ if (codefragment != null)
+ text += " <" + codefragment + ">";
+ System.err.println(text);
+ throw new ParsingException();
+ }
+
+ /**
+ * This method reports an error level problem
+ *
+ * @param reason
+ * why we have an error level problem
+ */
+ public static void rude(String reason) throws ParsingException {
+ // Apache commons logging
+ // log.error(Object line, null);
+ // or for now....
+ rude(reason, null, 0, null);
+ }
+
+ /**
+ * This method reports an error level problem
+ *
+ * @param reason
+ * why we have an error level problem
+ */
+ public static void screenMessage(String msg) {
+ // Apache commons logging
+ // log.error(Object line, null);
+ // or for now....
+ System.out.println(msg);
+ }
+
+ /**
+ * Escapes special characters like " so that they can be output in a C
+ * string literal. Also removes newlines, since C string literals can't be
+ * split over lines.
+ */
+ String pretty(String s) {
+ StringBuffer sb = new StringBuffer(s);
+ for (int i = 0; i < sb.length(); i++)
+ switch (sb.charAt(i)) {
+ case '"':
+ sb = sb.insert(i, '\\');
+ i++;
+ break;
+ case '\n':
+ sb = sb.deleteCharAt(i);
+ i--;
+ break;
+ }
+ return sb.toString();
+ }
+
+ private static boolean startsWithComment(String s) {
+ if (null == s || s.length() < 2)
+ return false;
+ if (s.startsWith("//"))
+ return true;
+ if (s.startsWith("/*"))
+ return true;
+ return false;
+ }
+
+ private static int endOfComment(String s) {
+ int idx;
+ if (s.startsWith("//"))
+ idx = s.indexOf("\n");
+ else {
+ idx = s.indexOf("*/");
+ if (-1 != idx)
+ idx++; // Step over */
+ }
+ return idx;
+ }
+
+ private static boolean startsWithStringLiteral(String s) {
+ if (null == s || s.length() < 1)
+ return false;
+ if (s.startsWith("\"") || s.startsWith("'"))
+ return true;
+ return false;
+ }
+
+ private static int endOfStringLiteral(String s) {
+ boolean escape = false;
+ char c0 = s.charAt(0);
+ for (int i = 1; i < s.length(); i++) {
+ if (!escape && s.charAt(i) == c0)
+ return i;
+
+ // \" or \' does not end the literal
+ if ('\\' == s.charAt(i))
+ // Escaping a \ should switch escape off so \\' does end
+ // the literal
+ escape = !escape;
+ else
+ escape = false;
+ }
+ return -1;
+ }
+
+ /**
+ * If the String s starts with a string literal or a comment, return i plus
+ * the index of the end of the literal or comment. String literals are
+ * enclosed in " or ' and comments start with /* or //.
+ */
+ private static int skip(String s, int i) {
+ int j = 0;
+ if (startsWithStringLiteral(s)) {
+ j = endOfStringLiteral(s);
+ if (-1 == j)
+ return -1;
+ } else if (startsWithComment(s)) {
+ j = endOfComment(s);
+ if (-1 == j)
+ return -1;
+ }
+ return i + j;
+ }
+
+ /**
+ * A better method than .equals() because it doesn't NullPointerException
+ * when one of the parameters is null.
+ */
+ public static boolean safeEquals(Object o1, Object o2) {
+ if (null == o1 && null == o2)
+ return true;
+ if (null == o1 && null != o2)
+ return false;
+ if (null != o1 && null == o2)
+ return false;
+ return o1.equals(o2);
+ }
+
+ public static void outputDebugString(String line) {
+ if (!Options.quiet()) {
+ if (Options.debug())
+ // Apache commons logging
+ // log.debug(Object line, null);
+ // or for now
+ System.out.println(line);
+ }
+ }
+
+ /**
+ * This static method allows different parts of the code to inform about
+ * significant events. Code interested in specific types of event can
+ * register a listener against that type (not written yet)
+ *
+ * @param eventType
+ * An int type enum indicating the type of event.
+ * @param message
+ * A message that can be output to the user.
+ */
+ public static final int EVENT_TYPE_XML_ITEM_PARSED = 1;
+
+ public static final int EVENT_TYPE_FILE_PARSED = 2;
+
+ public static final int EVENT_TYPE_FILE_CREATE = 3;
+
+ public static final int VERBOSE_LIMIT = 1024;
+
+ public static final int DEPLOYMENT_ARTEFACT = VERBOSE_LIMIT;
+
+ public static final int DEPLOYMENT_ARTEFACT_ENCOUNTERED = DEPLOYMENT_ARTEFACT + 1;
+
+ public static final int DEPLOYMENT_ARTEFACT_GENERATED = DEPLOYMENT_ARTEFACT + 2;
+
+ public static final int DEPLOYMENT_INPUT_DIRECTORY = DEPLOYMENT_ARTEFACT + 3;
+
+ public static final int DEPLOYMENT_OUTPUT_DIRECTORY = DEPLOYMENT_ARTEFACT + 4;
+
+ private static boolean reportArtefacts = false;
+
+ /**
+ * An easily callable method to allow tracking/reposting of events in scagen
+ * and other tools.
+ *
+ * @param eventType
+ * used for classifying event
+ * @param message
+ * a user readable message
+ */
+ public static void postEvent(int eventType, String message) {
+ if (Options.verbose() && eventType < VERBOSE_LIMIT) {
+ screenMessage(message);
+ }
+
+ if ((eventType & DEPLOYMENT_ARTEFACT) > 0) {
+ reportArtefact(message, eventType);
+ }
+
+ }
+
+ /**
+ * @param message
+ * The user message
+ * @param eventType
+ * The type of event (input or output). This is used to determine
+ * if the path name of the file starts with the COMPOSITE_ROOT
+ * directory or the given output directory as the one of these
+ * prefixes is removed from the path name in order to give the
+ * new (destination) path relative to the new composite root
+ *
+ *
+ */
+
+ static String scagenInputDir = "COMPOSITE_ROOT";
+
+ static String scagenOutputDir = "SCAGEN_OUTPUT";
+
+ static String newCompositeRoot = "NEW_COMPOSITE_ROOT";
+
+ static String generatedDirName = "$sourceDir1";
+
+ private static void reportArtefact(String message, int eventType) {
+
+ if (Utils.isReportArtefacts()) {
+
+ // Changing the value of the variable below will alter the output of
+ // the
+ // deploy assist strings:
+ // true will result in a "copy source NEW_COMPOSITE_ROOT\dest" output
+ // and
+ // false will result in a "inputDir c:\fred"
+ // "outputDir c:\bob"
+ // "input c:\fred\sca.composite"
+ // "output c:\bob\proxy.h" type output
+ String command = null;
+
+ try {
+ newCompositeRoot = (String) Options.getOption("-deploy");
+ command = (String) Options.getOption("-command");
+ } catch (Exception e) {
+ // let it default
+ }
+
+ if (null == newCompositeRoot) {
+ newCompositeRoot = "DEPLOY_COMPOSITE_ROOT";
+ }
+
+ if (null == command) {
+ command = "copy";
+ }
+
+ if (Options.outputCommand()) {
+
+ String tail = message;
+ switch (eventType) {
+ case DEPLOYMENT_ARTEFACT_ENCOUNTERED:
+ if (message.startsWith(scagenInputDir)) {
+ tail = message.substring(scagenInputDir.length());
+ }
+
+ String dest = joinPathElements(newCompositeRoot, tail);
+
+ System.out.println(command + " " + platformSlashes(message)
+ + " " + platformSlashes(dest));
+ break;
+
+ case DEPLOYMENT_ARTEFACT_GENERATED:
+ if (message.startsWith(scagenOutputDir)) {
+ tail = message.substring(scagenOutputDir.length());
+ }
+
+ dest = joinPathElements(newCompositeRoot, tail);
+ System.out.println(command + " " + platformSlashes(message)
+ + " " + platformSlashes(dest));
+ break;
+ case DEPLOYMENT_INPUT_DIRECTORY:
+ scagenInputDir = message;
+ //System.out.println("inputDir " + message);
+ break;
+ case DEPLOYMENT_OUTPUT_DIRECTORY:
+ scagenOutputDir = message;
+ //System.out.println("outputDir " + message);
+ break;
+ default:
+ break;
+ }
+
+ } else {
+
+ if (Options.list()) {
+ switch (eventType) {
+ case DEPLOYMENT_ARTEFACT_ENCOUNTERED:
+ case DEPLOYMENT_ARTEFACT_GENERATED:
+ System.out.println(platformSlashes(message));
+ break;
+ case DEPLOYMENT_INPUT_DIRECTORY:
+ case DEPLOYMENT_OUTPUT_DIRECTORY:
+ default:
+ break;
+ }
+ } else {
+ switch (eventType) {
+ case DEPLOYMENT_ARTEFACT_ENCOUNTERED:
+ //TODO make efficient
+ System.out.println("$sourceDir1"
+ + platformSlashes(message.substring(scagenInputDir.length())));
+ break;
+ case DEPLOYMENT_ARTEFACT_GENERATED:
+ //TODO make efficient
+ System.out.println(generatedDirName
+ + platformSlashes(message.substring(scagenOutputDir.length())));
+ break;
+ case DEPLOYMENT_INPUT_DIRECTORY:
+ scagenInputDir = platformSlashes(message);
+ System.out.println("sourceDir1=" + scagenInputDir);
+ break;
+ case DEPLOYMENT_OUTPUT_DIRECTORY:
+ scagenOutputDir = platformSlashes(message);
+ if (!scagenInputDir.equals(scagenOutputDir)) {
+ generatedDirName = "$sourceDir2";
+ System.out.println("sourceDir2=" + scagenOutputDir);
+ } else {
+ //generatedDirName = "sourceDir1";
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * @param tail
+ * @param tail
+ * @return
+ */
+ public static String joinPathElements(String root, String tail) {
+ String separator;
+ // Stick in a "/" (File.separator) if required.
+ if ((tail.substring(0, 1).equals("/") || newCompositeRoot.substring(
+ root.length() - 1, root.length()).equals("/"))
+ || (tail.substring(0, 1).equals("\\") || root.substring(
+ root.length() - 1, root.length()).equals("\\"))
+
+ ) {
+ separator = "";
+ } else {
+ separator = File.separator;
+ }
+ String dest = newCompositeRoot + separator + tail;
+ return dest;
+ }
+
+ /**
+ * @param reportArtefacts
+ * The reportArtefacts to set.
+ */
+ public static void setReportArtefacts(boolean reportArtefacts) {
+ Utils.reportArtefacts = reportArtefacts;
+ }
+
+ /**
+ * @return Returns the reportArtefacts.
+ */
+ private static boolean isReportArtefacts() {
+ return reportArtefacts;
+ }
+
+ private static String platformSlashes(String path) {
+ if (null == path) {
+ return path;
+ }
+ // We need a double level of \\ escapes if the slashes are
+ // this way round.
+ String separatorForRegex = File.separator
+ .replaceAll("\\\\", "\\\\\\\\");
+ return path.replaceAll("[/\\\\]+", separatorForRegex);
+
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html
new file mode 100644
index 0000000000..c423477193
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html
@@ -0,0 +1,58 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<html>
+
+<head>
+<title>Design documentation for org\apache\tuscany\sca\cpp\tools\common</title>
+</head>
+
+<body lang=EN-GB>
+
+<div class=Section1>
+
+<h1>Overview</h1>
+
+This package can be used to reflect across C++ source code. It can produce
+a network of descriptive objects describing C++ Headers, Signatures, Parameters and so
+on that it finds in a given location of the file system.
+Each of the descriptive objects has a set of getters that return either
+the descriptive child objects, or for primitives, the string that represents the actual
+value such as "int" or "myFunction".
+<p>
+There are also various utility methods that help with navigating the information, for example the Signature
+class has an isConstructor method. The API Javadoc contains further details of these.
+<p>
+The package can scan a directory using a file mask to identify what types
+of files are to be scanned. In this application we are interested only
+in the function prototypes in the C++ header files.
+<p>
+The implementation was originated using some java code that was also
+contributed to the Apache org.apache.axis.tools.common package. Care
+has been taken that the original code was not sourced via Apache. If
+this project is adopted by Apache then it is very possible that this
+package could be merged with or made obsolete by org.apache.axis.tools.common
+and because of this the design and interfaces have been preserved from
+the original code as much as possible.
+
+<p>
+</div>
+</body>
+
+</html>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentDomNodeHandler.java
new file mode 100644
index 0000000000..28974b41a6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentDomNodeHandler.java
@@ -0,0 +1,366 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.sca.cpp.tools.common.Headers;
+import org.apache.tuscany.sca.cpp.tools.common.Signature;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+import org.w3c.dom.Node;
+
+/**
+ * This class will do the required processing for the <component>element of a
+ * sca composite file.
+ */
+public class ComponentDomNodeHandler extends GenericDomNodeHandler {
+
+ /**
+ * This method will do the "normal" processing and then trigger a call to
+ * processComponentNode.
+ *
+ * @param node
+ * the node being processed
+ * @param contextXPath
+ * the XPath to the node
+ * @param handlers
+ * the map pf element names to DomNodeHandlers
+ * @param parameters
+ * a map of XPaths to parameters values found so far
+ */
+
+ public void handleNode(Node node, String contextXPath, Map handlers,
+ Map parameters) {
+
+ // Pick up attrs and the interface.cpp child elements
+ super.handleNode(node, contextXPath, handlers, parameters);
+
+ try {
+ //OK now go and create the wrapper and proxy for the service
+ processComponentNode(contextXPath, parameters);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * This method basically moved from the text names of things to operating on
+ * the actual Files. It will also verify or work out the correct class name
+ * for the implmentation and complain if this does match at least one
+ * potential service method in the class.
+ *
+ * @param contextXPath
+ * used to pull the correct values from the parameters map (as
+ * there can be multiple implementation.cpp elelements in there).
+ * @param parameters
+ * a map of XPath keys to attribute values
+ * @throws Exception
+ */
+ private void processComponentNode(String contextXPath, Map parameters)
+ throws Exception {
+
+ String implHeader = (String) parameters.get(contextXPath
+ + "/implementation.cpp/@header");
+ String implClass = (String) parameters.get(contextXPath
+ + "/implementation.cpp/@class");
+
+ File compositeOrFragmentFile = (File) parameters
+ .get("compositeOrFragmentFile");
+ File implHeaderFile = null;
+ if (null != compositeOrFragmentFile) {
+ File dir = compositeOrFragmentFile.getParentFile();
+ implHeaderFile = new File(dir, implHeader);
+ } else {
+ throw new InternalError(
+ "Internal error: composite or fragment file not present in internal parameters");
+ }
+
+ try {
+ String resolvedImplClassName = getClassName(implHeaderFile,
+ implClass);
+
+ // Check or retrieve the impl Class name.
+ if (null == resolvedImplClassName) {
+ try {
+ //A class attribute was set but there were no methods of
+ // the
+ // class in the header
+ System.out
+ .println("Classname given ("
+ + implClass
+ + ") does not match any header file method's classes in file: "
+ + implHeaderFile.getCanonicalPath());
+ } catch (IOException e) {
+ System.out
+ .println("Classname given ("
+ + implClass
+ + ") does not match any header file method's classes in file: "
+ + implHeaderFile.getAbsolutePath());
+ }
+ return;
+ } else {
+ File target = (File) parameters.get("targetFile");
+ // go into the .componentType file and generate the cpp
+ processComponentTypeFile(implHeaderFile, target,
+ resolvedImplClassName);
+
+ }
+ } catch (Exception e) {
+ String compName = (String) parameters
+ .get("/compositeFragment/component/@name");
+ Utils
+ .screenMessage("Problem interpreting header or class attributes in "
+ + compName
+ + " component, in "
+ + compositeOrFragmentFile.getPath() + " file");
+ System.exit(-2);
+ }
+
+ }
+
+ /**
+ * The purpose of this method is to move from the DOM parameters to dealing
+ * with the actual Files involved. It is from this method that we kick off
+ * the processing of the componentType file.
+ *
+ * @param header
+ * the implementation header
+ * @param target
+ * the directory for the output
+ * @param implClass
+ * @throws Exception
+ */
+ private void processComponentTypeFile(File header, File target,
+ String implClass) throws Exception {
+
+ // The componentType files should be in the same dir as the Impl
+ // header...
+ if (header == null || target == null) {
+ return;
+ }
+
+ File componentTypeDirectory = header.getParentFile();
+ String headerFileName = header.getName();
+ String componentTypeName = headerFileName.substring(0, headerFileName
+ .lastIndexOf("."));
+
+ File componentTypeFile = new File(componentTypeDirectory,
+ componentTypeName + ".componentType");
+
+ ComponentTypeFileHandler ctParser = new ComponentTypeFileHandler();
+
+ // The implClass is used in the generated wrapper code so we need to
+ // store
+ // it so we can tunnel through the standard actOnFile signature.
+
+ int namespaceEnd = -1;
+ if (null != implClass) {
+ namespaceEnd = implClass.lastIndexOf("::");
+ }
+
+ String namespace = null;
+
+ if (-1 != namespaceEnd) {
+ namespace = implClass.substring(0, namespaceEnd);
+ ctParser.setParameter("implNamespace", namespace);
+ implClass = implClass.substring(namespaceEnd + 2);
+ }
+
+ if (implClass != null) {
+ ctParser.setParameter("implClass", implClass);
+ }
+
+ try {
+ ctParser.handleComponentTypeFile(componentTypeFile, target);
+ } catch (Exception e) {
+ Utils
+ .screenMessage("There has been a problem parsing the componentType file: "
+ + componentTypeFile.getCanonicalPath());
+ Utils.screenMessage(" the reported errors is "
+ + e.getLocalizedMessage());
+ Utils.screenMessage(" and the java exception stack is below.");
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ /**
+ * The resolve and check the classname of the service. If we have an
+ * implementation class name we have to check that there is: at least one
+ * (non-private, non constructor or finalizer) method of that class in the
+ * header If there is no implementation class then we will return the class
+ * of the first non-private/constructor/finalizer method we find.
+ *
+ * @param header
+ * @param implementationCppClass
+ * @return
+ * @throws Exception
+ */
+ private String getClassName(File header, String implementationCppClass)
+ throws Exception {
+ String methodClassName = null;
+ List methods = null;
+
+ if (null == header) {
+ return null;
+ }
+
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_ENCOUNTERED, header
+ .getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_PARSED,
+ "Scagen processing C++ implementation header "
+ + header.getAbsolutePath());
+
+ try {
+ Headers headers = new Headers();
+
+ headers.actOnFile(header, null, 1);
+
+ methods = headers.getAllMethods();
+
+ } catch (FileNotFoundException fnfe) {
+ String path;
+ try {
+ path = header.getCanonicalPath();
+ } catch (IOException e1) {
+ path = header.getPath();
+ }
+ Utils.screenMessage("The header file: " + path
+ + " referenced cannot be found.");
+ throw fnfe;
+ } catch (Exception e) {
+ String path = header.getPath();
+ Utils.screenMessage("The header file: " + path
+ + " referenced is not valid. Reason given is "
+ + e.getLocalizedMessage());
+ throw e;
+ }
+
+ // We need at least some methods
+ if (null == methods) {
+ return null;
+ }
+
+ // We need at least one service method of to do anything
+ methods = trimMethodsOfPrivatesConstructorsAndDestrutors(methods);
+ if (null == methods || methods.size() == 0) {
+ return null;
+ }
+
+ // If the user specifies an implementation class then we need at
+ // least one service method of that class
+ if (implementationCppClass != null) {
+ methods = filterMethodsToOneClass(methods, implementationCppClass);
+
+ if (null == methods || methods.size() == 0) {
+ return null;
+ } else {
+ // There was at least one method of the correct type
+ return implementationCppClass;
+ }
+ } else {
+ // Implementation class is null so we return the fully qualified classname of the
+ // first service method
+ Signature s = (Signature) methods.get(0);
+ String className = s.getTrimClassName();
+ String namespace = s.getNamespace();
+ if( namespace != null && namespace.length() > 0)
+ {
+ className = namespace + "::" + className;
+ }
+
+ return className;
+ }
+ }
+
+ /**
+ * Filter the mthods supplied to only ones fo the supplied class.
+ *
+ * @param methods
+ * the list of methods
+ * @param implementationCppClass
+ * the class we wish
+ * @return a list of methods of the correct class
+ */
+ private List filterMethodsToOneClass(List methods,
+ String implementationCppClass) {
+
+ if (null == methods) {
+ return null;
+ }
+
+ if (null == implementationCppClass
+ || implementationCppClass.length() == 0) {
+ return null;
+ }
+
+ for (Iterator iter = methods.listIterator(); iter.hasNext();) {
+ Signature method = (Signature) iter.next();
+
+ String className = method.getTrimClassName();
+ String namespace = method.getNamespace();
+
+ if (namespace != null && namespace.length() > 0) {
+ className = namespace + "::" + className;
+ }
+
+ if (!implementationCppClass.equals(className)) {
+ iter.remove();
+ }
+ }
+
+ return methods;
+
+ }
+
+ /**
+ * This method removes contructor and destructor methods from the list.
+ *
+ * @param methods
+ * the list of methods
+ * @return
+ */
+ private List trimMethodsOfPrivatesConstructorsAndDestrutors(List methods) {
+
+ if (null == methods) {
+ return null;
+ }
+
+ for (Iterator iter = methods.listIterator(); iter.hasNext();) {
+ Signature method = (Signature) iter.next();
+
+ if (method.isConstructor() || method.isDestructor()) {
+ iter.remove();
+ }
+ }
+
+ return methods;
+ }
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentTypeFileHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentTypeFileHandler.java
new file mode 100644
index 0000000000..6c86fa25b5
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentTypeFileHandler.java
@@ -0,0 +1,130 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+
+import org.apache.tuscany.sca.cpp.tools.common.FileActor;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+
+/**
+ * The purpose of this class is to specialise the map of XML element handlers
+ * for a XXX.componentType file that is used by the XMLFileActor
+ */
+public class ComponentTypeFileHandler extends XMLFileActor {
+
+ static {
+ // We set up a map for each element type we wish to handle
+ // this alows the XML handling code to be generic and type free
+ // while the handlers don't have to do mcuh XML handling.
+
+ GenericDomNodeHandler gdnh = new GenericDomNodeHandler();
+ handlers.put("componentType", gdnh);
+ handlers.put("interface.cpp", gdnh);
+
+ ServiceDomNodeHandler sdnh = new ServiceDomNodeHandler();
+ handlers.put("service", sdnh);
+
+ ReferenceDomNodeHandler rdnh = new ReferenceDomNodeHandler();
+ handlers.put("reference", rdnh);
+ }
+
+ /**
+ * This method just exists to add the default starting depth of 1 to the
+ * underlying actOnFile interface
+ *
+ * @param componentTypeXML
+ * @param target
+ * @throws Exception
+ */
+ public void handleComponentTypeFile(File componentTypeXML, File target)
+ throws Exception {
+ // We have already set up the XML element handlers.
+ actOnFile(componentTypeXML, target, 1);
+ // We need do no more, the service and reference handlers
+ // ServiceDomNodeHandler and ReferenceDomNodeHandler
+ // will take appropriate action.
+ }
+
+ /**
+ * This method is the main FileActor method
+ *
+ * @see FileActor#actOnFile(File, File, int) Here we create an initial DOM
+ * and kick off the processing (using the handler map that has been set
+ * up by the concrete subclass).
+ *
+ * @param compositeXML
+ * the composite or fragment file
+ * @param target
+ * the target directory
+ * @param depth
+ * not uesed here but in the
+ * @see FileActor#actOnFile(File, File, int) interface to allow for
+ * recursive diving into a directory structure.
+ */
+ public void actOnFile(File fileXML, File target, int depth)
+ throws Exception {
+
+ if (null == fileXML || null == target) {
+ return;
+ }
+
+ parameters.put("componentTypeFile", fileXML);
+
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_ENCOUNTERED, fileXML.getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_PARSED, "Scagen processing SCA componentType file " + fileXML.getAbsolutePath());
+
+ super.actOnFile(fileXML, target, depth);
+
+ }
+
+ /**
+ * @return an error message - usually over-ridden.
+ */
+ protected String getContextMessage() {
+
+ String composite = ((File) parameters.get("compositeOrFragmentFile")).getPath();
+ if (null == composite) {
+ composite = "unknown";
+ }
+
+ String component = (String) parameters.get("/composite/component/@name");
+ if (null == component) {
+ component = (String) parameters
+ .get("/compositeFragment/component/@name");
+ }
+ if (null == component) {
+ composite = "unknown";
+ }
+
+ String msg = "when processing composite " + composite;
+
+ msg = msg
+ + "\nin this composite file, the component \""
+ + component
+ + "\" has an implementation.cpp element with a header attribute \nwhere the C++ header can be found but it has no matching .componentType file present in\nthe same directory as the header.";
+
+ return msg;
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/CompositeOrFragmentFileHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/CompositeOrFragmentFileHandler.java
new file mode 100644
index 0000000000..3eb8dc7d98
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/CompositeOrFragmentFileHandler.java
@@ -0,0 +1,91 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+
+import org.apache.tuscany.sca.cpp.tools.common.FileActor;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+
+/**
+ * The purpose of this class is purely to specialise the handler map to one with
+ * a specific ComponentDomNodeHandler.
+ */
+public class CompositeOrFragmentFileHandler extends XMLFileActor {
+
+ static {
+
+ GenericDomNodeHandler gdnh = new GenericDomNodeHandler();
+
+ /*
+ * We use a specific Component node handler in order to be able to
+ * process multiple components in the same XML file
+ */
+ ComponentDomNodeHandler componentdnh = new ComponentDomNodeHandler();
+ handlers.put("component", componentdnh);
+
+ /*
+ * We are interested inthe elements below but they only need standard
+ * processing
+ */
+ handlers.put("composite", gdnh);
+ handlers.put("compositeFragment", gdnh);
+ handlers.put("implementation.cpp", gdnh);
+ }
+
+ /**
+ * This method is the main FileActor method
+ *
+ * @see FileActor#actOnFile(File, File, int) Here we create an initial DOM
+ * and kick off the processing (using the handler map that has been set
+ * up by the concrete subclass).
+ *
+ * @param compositeXML
+ * the composite or fragment file
+ * @param target
+ * the target directory
+ * @param depth
+ * not uesed here but in the
+ * @see FileActor#actOnFile(File, File, int) interface to allow for
+ * recursive diving into a directory structure.
+ */
+ public void actOnFile(File compositeXML, File target, int depth)
+ throws Exception {
+
+ if (null == compositeXML || null == target) {
+ return;
+ }
+
+ parameters.put("compositeOrFragmentFile", compositeXML);
+
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_ENCOUNTERED, compositeXML
+ .getAbsolutePath());
+
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_PARSED,
+ "Scagen processing SCA composite file "
+ + compositeXML.getAbsolutePath());
+
+ super.actOnFile(compositeXML, target, depth);
+
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DirectoryScanner.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DirectoryScanner.java
new file mode 100644
index 0000000000..9cf7952afa
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DirectoryScanner.java
@@ -0,0 +1,93 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+import java.util.Set;
+
+import org.apache.tuscany.sca.cpp.tools.common.FileActor;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+
+public class DirectoryScanner {
+ private FileActor actor;
+
+ private Set actOnTheseFileExtensions;
+
+ public DirectoryScanner(FileActor actor, Set extensions) {
+ this.actor = actor;
+ this.actOnTheseFileExtensions = extensions;
+ }
+
+ /**
+ *
+ * @param source
+ * The composite root directory
+ * @param target
+ * The directory that will hold the generated output
+ * @param depth
+ * The depth from the initial starting point, not significant for
+ * the Scagen tool as we are only interested in the composite root
+ * directory but present due to the FileActor actOnFile interface
+ * method. This code is pulled from the code in the CParsingTool
+ * class and further work is needed to remove the duplication.
+ * Tnterface has been left unchanged as we hope to reconverge the
+ * parser here with the original one once the changes are fed
+ * back into the original code.
+ * @throws Exception
+ */
+ public void walkTree(File source, File target, int depth) throws Exception {
+ depth++;
+ boolean noTarget = (null == target);
+
+ if (!source.canRead())
+ Utils.rude("Cannot read from source directory " + source);
+ if (!noTarget && !target.canWrite())
+ Utils.rude("Cannot write to target directory " + target);
+
+ if (source.isDirectory()) {
+ File[] filesInDirectory = source.listFiles();
+ for (int i = 0; i < filesInDirectory.length; i++) {
+ File file = filesInDirectory[i];
+ String name = file.getName();
+ int dot = name.lastIndexOf('.');
+ String ext = null;
+ if (-1 != dot) {
+ ext = name.substring(dot + 1);
+ }
+
+ if (file.isFile()
+ && (actOnTheseFileExtensions == null || (!file
+ .isHidden() && actOnTheseFileExtensions
+ .contains(ext)))) {
+ // this is a file we need to act on!
+ actor.actOnFile(file, target, depth);
+ }
+ }
+ } else {
+ return; // Do not act on single files for now we expect a composite
+ // root directory
+ // and the "main" class checks its parameters to ensure this is so.
+ }
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomHandler.java
new file mode 100644
index 0000000000..0756b5fc3b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomHandler.java
@@ -0,0 +1,83 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.util.Map;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * The purpose of this class it to provide a generic class that can handle both
+ * a DOM and a DOM node.
+ *
+ */
+public class DomHandler extends GenericDomNodeHandler {
+ /**
+ * This method will run through the initial level of the DOM using the
+ * handlers map
+ *
+ * @param dom
+ * the document being consumed
+ * @param handlers
+ * the map from element name to node handler
+ * @param parameters
+ * a map of parameters - this is often used by a handler to place
+ * a name-value pair, the name is often an Xpath representation
+ * of the location of the data in the DOM but handlers are free
+ * to use whatever they like - the contextXpath is generated as
+ * an Xpath prefix for those handlers that wish to use it.
+ */
+ public static void handleDom(Document dom, Map handlers, Map parameters) {
+ if (dom != null) {
+ NodeList childNodes = dom.getChildNodes();
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ Node childNode = childNodes.item(i);
+ mapNodeToHandlerAndHandle(childNode, "/"
+ + childNode.getNodeName(), handlers, parameters);
+ }
+ }
+ }
+
+ /**
+ *
+ * @param node
+ * The DOM node being consumed
+ * @param contextXPath
+ * The XPath to this node
+ * @param handlers
+ * The map from element name to node handler
+ * @param parameters
+ * A map of parameters - this is often used by a handler to place
+ * a name-value pair, the name is often an Xpath representation
+ * of the location of the data in the DOM but handlers are free
+ * to use whatever they like - the contextXpath is generated as
+ * an Xpath prefix for those handlers that wish to use it.
+ */
+ public void handleNode(Node node, String contextXPath, Map handlers,
+ Map parameters) {
+ mapNodeToHandlerAndHandle(node, contextXPath, handlers, parameters);
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomNodeHandler.java
new file mode 100644
index 0000000000..37c2a1a81c
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomNodeHandler.java
@@ -0,0 +1,46 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.util.Map;
+
+import org.w3c.dom.Node;
+
+public interface DomNodeHandler {
+
+ public static int ELEMENT = 1;
+ /**
+ * An interface for classes that can process DOM nodes.
+ *
+ * @param node the DOM node being consumed
+ * @param contextXPath the XPath to this node
+ * @param handlers The map from element name to node handler
+ * @param parameters A map of parameters - this is often used by a handler to place
+ * a name-value pair, the name is often an Xpath like representation of the
+ * location of the data in the DOM but handlers are free to use whatever
+ * they like - the contextXpath is generated as an Xpath prefix for those
+ * handlers that wish to use it.
+ */
+ void handleNode( Node node, String contextXPath, Map handlers, Map parameters );
+
+}
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/GenericDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/GenericDomNodeHandler.java
new file mode 100644
index 0000000000..1ec393959d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/GenericDomNodeHandler.java
@@ -0,0 +1,220 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ *
+ *
+ *
+ */
+public class GenericDomNodeHandler implements DomNodeHandler {
+ /**
+ * This method parses the DOM attributes into name value pairs in the
+ * parameter map each valued keyed by its XPath.
+ *
+ * @param node
+ * the DOM node being processed
+ * @param contextPath
+ * the XPath to the DOM node being processed
+ * @param parameters
+ * a scratchpad map of name value pairs
+ */
+ public void transferAttrsToParameters(Node node, String contextPath,
+ Map parameters) {
+
+ if (node == null || contextPath == null || parameters == null)
+ return;
+
+ NamedNodeMap attrs = node.getAttributes();
+ if (attrs != null) {
+ for (int i = 0; i < attrs.getLength(); i++) {
+ Node attr = attrs.item(i);
+ parameters.put(contextPath + "/" + "@" + attr.getNodeName(),
+ attr.getNodeValue());
+
+ // Report the library name to the deployment tool if required.
+ if ("library".equals(attr.getNodeName())) {
+ //This is a path relative to the composite root.
+ //so we need to add it in.
+ File mod = (File) parameters.get("compositeOrFragmentFile");
+ if (null != mod) {
+ String separatorForRegex = File.separator.replaceAll(
+ "\\\\", "\\\\\\\\");
+
+ String end = attr.getNodeValue().replaceAll("[/\\\\]+",
+ separatorForRegex);
+
+ if (!end.startsWith(File.separator)) {
+ end = File.separator + end;
+ }
+
+ String fullPath = mod.getParentFile().getAbsolutePath()
+ + end;
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_ENCOUNTERED,
+ fullPath);
+ }
+
+ }
+
+ }
+ }
+ return;
+ }
+
+ /**
+ * This method will iterate through the DOM node's children and call the
+ * appropriate handler for each one.
+ *
+ * @param node
+ * the DOM node being processed
+ * @param contextPath
+ * the XPath to the DOM node being processed
+ * @param handlers
+ * a map of element name to handler objects
+ * @param parameters
+ * a scratchpad map of name value pairs
+ */
+ public void handleChildElements(Node node, String contextPath,
+ Map handlers, Map parameters) {
+
+ if (node == null || contextPath == null)
+ return;
+
+ NodeList children = node.getChildNodes();
+ if (children != null) {
+ for (int i = 0; i < children.getLength(); i++) {
+ Node child = children.item(i);
+ mapNodeToHandlerAndHandle(child, contextPath + "/"
+ + child.getNodeName(), handlers, parameters);
+ }
+ }
+ return;
+ }
+
+ /**
+ * This method will resolve any registered handler for a particular DOM
+ * element and call the handleNode method on it. If the handlers map has a
+ * mapping from "entity" to an instance of EntityHandler which implements
+ * the DomNodeHandler interface then any node that looks like <entity>
+ * <any_other/><stuff/></entity>
+ *
+ * Will be passed to the EntityHandler to process.
+ *
+ * @param node
+ * the DOM node being processed
+ * @param contextPath
+ * the XPath to the DOM node being processed
+ * @param handlers
+ * a map of element name to handler objects
+ * @param parameters
+ * a scratchpad map of name value pairs
+ */
+ public static void mapNodeToHandlerAndHandle(Node node, String contextPath,
+ Map handlers, Map parameters) {
+ if (node != null && node.getNodeType() == DomNodeHandler.ELEMENT) {
+ String nodeName = node.getNodeName();
+ if (nodeName != null && nodeName.length() > 0) {
+ DomNodeHandler handler = (DomNodeHandler) handlers
+ .get(nodeName);
+ if (handler != null) {
+ handler.handleNode(node, contextPath, handlers, parameters);
+ }
+ }
+ }
+ }
+
+ /**
+ * This method will place the attributes in this node into the parameter map
+ * keyed by the XPath and recursively continue processing for any
+ * sub-elements of the node.
+ *
+ * @param node
+ * The DOM node being consumed
+ * @param contextXPath
+ * The XPath to this node
+ * @param handlers
+ * The map from element name to node handler
+ * @param parameters
+ * A map of parameters - this is often used by a handler to place
+ * a name-value pair, the name is often an Xpath representation
+ * of the location of the data in the DOM but handlers are free
+ * to use whatever they like - the contextXpath is generated as
+ * an Xpath prefix for those handlers that wish to use it.
+ */
+ public void handleNode(Node node, String contextXPath, Map handlers,
+ Map parameters) {
+
+ clearParametersAtThisXPath(contextXPath, parameters);
+ transferAttrsToParameters(node, contextXPath, parameters);
+ handleChildElements(node, contextXPath, handlers, parameters);
+ }
+
+ /**
+ * @param contextXPath
+ * @param parameters
+ */
+ private void clearParametersAtThisXPath(String contextXPath, Map parameters) {
+
+ // TODO: Slow but works, improve parameters mechanism overall
+ // to make this unecessary
+ if (contextXPath == null || parameters == null) {
+ return;
+ }
+
+ // We want to clear both /compositeFragment and /composite
+ // subtrees when we come across the root of either..
+ if (contextXPath.equals("/compositeFragment")) {
+ //clear both this and "composite"
+ contextXPath = "/composite";
+ }
+
+ Set parms = parameters.entrySet();
+ if (null != parms) {
+ Iterator iter = parms.iterator();
+ Map.Entry item = null;
+ String thisKey;
+
+ while (iter.hasNext()) {
+ item = (Entry) iter.next();
+ thisKey = (String) item.getKey();
+ if (thisKey.startsWith(contextXPath)) {
+ //System.out.println(" removing " + thisKey + " for " +
+ // item.getValue().toString() + " against " + contextXPath);
+ iter.remove();
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/LittleClass.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/LittleClass.java
new file mode 100644
index 0000000000..e7036037c6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/LittleClass.java
@@ -0,0 +1,33 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+/**
+ * This class is just a convenient application class that is loaded in order to
+ * get the application class loader. We are interested in the application class
+ * loader as we use its getResource method to resolve XML files independantly of
+ * where they are.
+ */
+public class LittleClass {
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ReferenceDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ReferenceDomNodeHandler.java
new file mode 100644
index 0000000000..5a79b49092
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ReferenceDomNodeHandler.java
@@ -0,0 +1,73 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.util.Map;
+
+import org.apache.tuscany.sca.cpp.tools.common.Options;
+import org.w3c.dom.Node;
+
+/**
+ * The purpose of this class is to process a <reference>element in a
+ * componentType file and then trigger a call to the method in ServicesGenerator
+ * to process the interface header file
+ */
+public class ReferenceDomNodeHandler extends GenericDomNodeHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.cpp.services.DomNodeHandler#handleNode(org.w3c.dom.Node,
+ * java.lang.String, java.util.Map, java.util.Map)
+ */
+ public void handleNode(Node node, String contextXPath, Map handlers,
+ Map parameters) {
+
+ // Pick up attrs and children
+ super.handleNode(node, contextXPath, handlers, parameters);
+
+ //OK we know we are handling a reference
+ //now go and create the wrapper and proxy for it
+ createProxyForReference(parameters);
+
+ }
+
+ /**
+ * This method is really just an adapter that adapts the -dir Option to a
+ * value int he parameters map for "composite_root"
+ *
+ * @param parameters
+ * the map of name-value parameters.
+ */
+ private void createProxyForReference(Map parameters) {
+ try {
+ String mr = (String) Options.getOption("-dir");
+ parameters.put("composite_root", mr);
+ ServicesGenerator.handleInterfaceHeader(parameters, true);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/Scagen.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/Scagen.java
new file mode 100644
index 0000000000..19e983c6b1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/Scagen.java
@@ -0,0 +1,176 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.tuscany.sca.cpp.tools.common.CParsingTool;
+import org.apache.tuscany.sca.cpp.tools.common.Options;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+
+/**
+ * This is the main top level class. Its purpose is to create a
+ * Composite/FragmentFile handler visitor and pass it to a DirectoryScanner for
+ * processing.
+ */
+public class Scagen extends CParsingTool {
+
+ public static Set COMPOSITE_EXTENSIONS = new HashSet(Arrays
+ .asList(new Object[] { "composite", "fragment" }));
+
+ /**
+ * @throws Exception
+ *
+ */
+ public Scagen(String[] args) throws Exception {
+ super(args);
+ }
+
+ /**
+ * Take a directory scanning class and create a vistor that knows how to
+ * handle any .composite or .fragment that the scanner comes across.
+ *
+ * @param args
+ * standard main args. THe values we expect in this class are
+ * scagen -dir input_dir -output output_dir
+ *
+ */
+ public static void main(String[] args) {
+ boolean failed = false;
+ try {
+ Scagen env = new Scagen(args);
+ CompositeOrFragmentFileHandler composite_handler = new CompositeOrFragmentFileHandler();
+
+ // Check and access the input SCA composite directory
+ String name = (String) Options.getOption("-dir");
+ if (null == name) {
+ Utils
+ .screenMessage("Please provide a SCA composite directory name as a \"-dir\" option.");
+ env.printUsage();
+ System.exit(-1);
+ }
+ File source = new File(name);
+ if (!source.isFile() && !source.isDirectory()) {
+ Utils
+ .screenMessage("The SCA composite directory provided as the \"-dir\" option cannot be accessed,");
+ Utils.screenMessage("the option given was: " + source);
+ env.printUsage();
+ System.exit(-1);
+ }
+
+ String deployDir = null;
+ try {
+ deployDir = (String) Options.getOption("-deploy");
+ if (null != deployDir || Options.deploy()) {
+ Utils.setReportArtefacts(true);
+ }
+ } catch (Exception e) {
+ // let it default to null
+ }
+
+ Utils.postEvent(Utils.DEPLOYMENT_INPUT_DIRECTORY, source
+ .getAbsolutePath());
+
+ // We check the -output option here as we wish to
+ // reuse the env.maybeCreateDirectory method
+ // unchanged from the original that went into axis and it will do a
+ // System.exit if there is no matching Option
+ String outputDirName = (String) Options.getOption("-output");
+ if (null == outputDirName) {
+ Utils
+ .screenMessage("Please provide an output directory name for the generated files as a \"-output\" option.");
+ env.printUsage();
+ System.exit(-1);
+ }
+
+ File outputDir = new File(outputDirName);
+
+ // Check we can create the output directory
+ if (outputDir == null || !outputDir.exists() && !outputDir.mkdir()) {
+ Utils.screenMessage("Failed to create output directory: "
+ + outputDirName);
+ env.printUsage();
+ System.exit(-1);
+ }
+
+ Utils.postEvent(Utils.DEPLOYMENT_OUTPUT_DIRECTORY, outputDir
+ .getAbsolutePath());
+
+ DirectoryScanner scanner = new DirectoryScanner(composite_handler,
+ COMPOSITE_EXTENSIONS);
+ scanner.walkTree(source, outputDir, 1);
+
+ if (0 == composite_handler.getFilesActedOn()) {
+ Utils
+ .screenMessage("No SCA composite or fragment files were found in: "
+ + source);
+ }
+
+ failed = composite_handler.failed;
+
+ } catch (Exception exception) {
+ Utils
+ .screenMessage("Unexpected error occurred while runnning the Scagen tool. The Java exception is below.");
+ exception.printStackTrace();
+ failed = true;
+ }
+
+ if (failed) {
+ Utils
+ .outputDebugString("Finished! (but encountered problems parsing composites)");
+ System.exit(-2);
+ }
+
+ Utils.outputDebugString("Finished!");
+ }
+
+ /**
+ * Provide a hint to the user on how to call this class
+ */
+ protected void printUsage() {
+ System.out
+ .println("usage: Java Scagen -dir <input_directory> -output <output_directory> [-verbose] [-deploy <deploy_dir>] [-nogenerate] [-outputCommand] [-command <copy_cmd>]");
+ System.out
+ .println(" -dir <input_directory>: the SCA composite root directory");
+ System.out
+ .println(" -output <output_directory>: a directory to put the generated output into");
+ System.out.println(" [-verbose]: report on what scagen is doing");
+ System.out
+ .println(" [-deploy <deploy_dir>]: output text to help in deploying the composite's artefacts");
+ System.out
+ .println(" [-command <copy_cmd>]: a string that is injected into the deploy text");
+ System.out
+ .println(" [-list]: change the deploy output text to a simple list of artefacts");
+ System.out
+ .println(" [-outputCommand]: change the deploy output text to command text format");
+ System.out
+ .println(" output is of form \"copy_cmd <dir>file1 <deploy_dir>file1\"");
+ System.out
+ .println(" [-nogenerate]: do not generate proxies and wrappers");
+
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServiceDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServiceDomNodeHandler.java
new file mode 100644
index 0000000000..c4ad140bfd
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServiceDomNodeHandler.java
@@ -0,0 +1,68 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.util.Map;
+
+import org.apache.tuscany.sca.cpp.tools.common.Options;
+import org.w3c.dom.Node;
+
+public class ServiceDomNodeHandler extends GenericDomNodeHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.cpp.services.DomNodeHandler#handleNode(org.w3c.dom.Node,
+ * java.lang.String, java.util.Map, java.util.Map)
+ */
+ public void handleNode(Node node, String contextXPath, Map handlers,
+ Map parameters) {
+
+ // Pick up attrs and the interface.cpp child elements
+ super.handleNode(node, contextXPath, handlers, parameters);
+
+ //OK now go and create the wrapper and proxy for the service
+ createWrapperAndProxyForService(parameters);
+
+ }
+
+ /**
+ * This method will generate the wrapper and proxy C++ and header files for
+ * the service.
+ *
+ * @param parameters
+ * a map of name-value parameters
+ */
+ private void createWrapperAndProxyForService(Map parameters) {
+
+ try {
+ String mr = (String) Options.getOption("-dir");
+ parameters.put("composite_root", mr);
+ ServicesGenerator.handleInterfaceHeader(parameters, false);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServicesGenerator.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServicesGenerator.java
new file mode 100644
index 0000000000..956db364a1
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServicesGenerator.java
@@ -0,0 +1,831 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.tuscany.sca.cpp.tools.common.CParsingTool;
+import org.apache.tuscany.sca.cpp.tools.common.Headers;
+import org.apache.tuscany.sca.cpp.tools.common.Options;
+import org.apache.tuscany.sca.cpp.tools.common.Parameter;
+import org.apache.tuscany.sca.cpp.tools.common.Signature;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+
+/**
+ * This class is the main class that handles the function that parses a C++
+ * interface header file into a DOM that holds all the semantic information
+ * about the interface - method names, parameters and return values. It then
+ * uses XSLT to generate different "views" of this data plus the parameter map
+ * from other sources that are the C++ programs for the proxy and wrapper
+ * implementations and headers.
+ */
+public class ServicesGenerator extends CParsingTool {
+
+ private static final String OPERATION_NAME_ATTR = "operationNameAttr";
+
+ private static final String HEADER_NAME_ATTR = "headerNameAttr";
+
+ private static final String SCA_OPERATION = "scaOperation";
+
+ private static final String SCA_SERVICE = "scaService";
+
+ private static final String SCA_OPERATION_RETURN_TYPE = "scaOperationReturnType";
+
+ private static final String SCA_OPERATION_PARAMETER = "scaOperationParameter";
+
+ private static final String SCA_OPERATION_PARAMETER_NAME_ATTR = "scaOperationParameterNameAttr";
+
+ private static final String SCA_OPERATION_PARAMETER_CONST_ATTR = "scaOperationParameterConstAttr";
+
+ private static final String SCA_INTERFACE_NAME_ATTR = "scaInterfaceNameAttr";
+
+ private static final String CPP_HEADER = "cppHeader";
+
+ private static boolean TESTING = true;
+
+ private static TransformerFactory txmf = null;
+
+ private static ServicesGenerator instance = null;
+
+ public ServicesGenerator(String[] args) throws Exception {
+ super(args);
+ txmf = TransformerFactory.newInstance();
+ }
+
+ /**
+ *
+ * @param parameters
+ * @param forReference
+ * true if we are creating a proxy for a reference (rather than
+ * for a service)
+ * @throws Exception
+ *
+ * The design is
+ * <ul>
+ * <li>handleInterfaceHeader
+ * <li>createDOMofMethods
+ * <li>createProxyCPPFromDom(outputDir, dom);
+ * <li>createProxyHeaderFromDom(outputDir, dom);
+ * </ul>
+ *
+ * plus if we are not generating for a reference element
+ * <ul>
+ * <li>createWrapperCPPFromDom(outputDir, dom);
+ * <li>createWrapperHeaderFromDom(outputDir, dom);
+ * <ul>
+ * Each of the create.... methods calls createOutputFromDom with a different
+ * style sheet.
+ *
+ */
+ public static void handleInterfaceHeader(Map parameters,
+ boolean forReference) throws Exception {
+ boolean failed = false;
+
+ String type = null;
+ if (forReference) {
+ type = "reference";
+ } else {
+ type = "service";
+ }
+ String interfaceHeaderFilename = (String) parameters
+ .get("/componentType/" + type + "/interface.cpp/@header");
+
+ String componentTypeFileHeaderName = interfaceHeaderFilename;
+
+ String sca_composite_root = (String) Options.getOption("-dir");
+ parameters.put("composite_root", sca_composite_root);
+
+ if (sca_composite_root != null && interfaceHeaderFilename != null
+ && interfaceHeaderFilename.length() > 0) {
+ String separator;
+ // Stick in a "/" (File.separator) if required.
+ if ((interfaceHeaderFilename.substring(0, 1).equals("/") || sca_composite_root
+ .substring(sca_composite_root.length() - 1,
+ sca_composite_root.length()).equals("/"))
+ || (interfaceHeaderFilename.substring(0, 1).equals("\\") || sca_composite_root
+ .substring(sca_composite_root.length() - 1,
+ sca_composite_root.length()).equals("\\"))
+
+ ) {
+ separator = "";
+ } else {
+ separator = File.separator;
+ }
+ interfaceHeaderFilename = sca_composite_root + separator
+ + interfaceHeaderFilename;
+ }
+
+ File outputDir = (File) parameters.get("targetDirectoryFile");
+
+ String[] args = new String[] { "-source", interfaceHeaderFilename,
+ "-target", outputDir.getPath() };
+ ServicesGenerator gen = new ServicesGenerator(args);
+ File file;
+ try {
+ if (null == interfaceHeaderFilename) {
+ gen.printUsage();
+ System.exit(-1);
+ }
+
+ file = new File(interfaceHeaderFilename);
+ if (!file.isFile()) {
+ if (file.isDirectory()) {
+ Utils
+ .rude("This tool works at the header file level and not for directories like "
+ + file);
+ }
+ Utils.rude("Bad file or directory " + file);
+ }
+ File source = file;
+ if (!outputDir.exists() && !outputDir.mkdir())
+ Utils.rude("Failed to create directory " + outputDir);
+
+ // The class below is the one that will go through the header
+ // file(s)
+ Headers headers = new Headers();
+
+ if (null != interfaceHeaderFilename) {
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_ENCOUNTERED, file
+ .getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_PARSED,
+ "Scagen processing C++ interface header "
+ + file.getAbsolutePath());
+ headers.actOnFile(file, outputDir, 1);
+ Utils.outputDebugString("Parsing files...");
+ }
+
+ String nameOfSorR = null;
+ String referenceName = null;
+ String serviceName = null;
+
+ if (forReference) {
+
+ Object rn = parameters.get("/componentType/reference/@name");
+
+ if (rn instanceof String) {
+ referenceName = (String) rn;
+ nameOfSorR = referenceName;
+ }
+ } else {
+
+ Object sn = parameters.get("/componentType/service/@name");
+
+ if (sn instanceof String) {
+ serviceName = (String) sn;
+ nameOfSorR = serviceName;
+ }
+ }
+
+ String compositeXmlFileHeader = null;
+ String compositeXmlFileHeaderNoExt = null;
+ Object compositeh = parameters
+ .get("/composite/component/implementation.cpp/@header");
+
+ if (compositeh == null) {
+ compositeh = parameters
+ .get("/compositeFragment/component/implementation.cpp/@header");
+ }
+
+ if (compositeh instanceof String) {
+ File f = new File((String) compositeh);
+ compositeXmlFileHeader = (String) compositeh;
+
+ String fname = f.getName();
+ compositeXmlFileHeaderNoExt = fname.substring(0, fname
+ .lastIndexOf('.'));
+
+ }
+
+ String implClassNameAttrFromCompositeFile = (String) parameters
+ .get("implClass");
+ String implClassNamespaceAttrFromCompositeFile = (String) parameters
+ .get("implNamespace");
+
+ if(implClassNamespaceAttrFromCompositeFile == null || implClassNamespaceAttrFromCompositeFile.length() == 0)
+ {
+ implClassNamespaceAttrFromCompositeFile = "";
+ }
+ else
+ {
+ implClassNamespaceAttrFromCompositeFile += "::";
+ }
+
+ String interfaceClassNameAttrFromComponentTypeFile;
+ if (forReference) {
+ interfaceClassNameAttrFromComponentTypeFile = (String) parameters
+ .get("/componentType/reference/interface.cpp/@class");
+ } else {
+ interfaceClassNameAttrFromComponentTypeFile = (String) parameters
+ .get("/componentType/service/interface.cpp/@class");
+ }
+
+ List methods = headers.getAllMethods();
+
+ // Pull out one of the methods' namespace attributes.
+ String intfNamespace = null;
+ if (methods.size() > 0) {
+ Signature method = (Signature) methods.get(0);
+ intfNamespace = method.getNamespace();
+ }
+
+ if (interfaceClassNameAttrFromComponentTypeFile != null) {
+ methods = filterToPublicMethodsOfGivenClass(methods,
+ interfaceClassNameAttrFromComponentTypeFile, true);
+ } else {
+ //We want to filter to methods of the class whose
+ //name matches the header file name.
+ // String intfClassName = (String) parameters.get("intfClass");
+ //
+ String headerFileBase = file.getName().replaceAll(
+ "\\.h|\\.hpp|\\.h++", "");
+
+ methods = filterToPublicMethodsOfGivenClass(methods,
+ headerFileBase, false);
+ }
+
+ Document dom = createDOMofMethods(methods, source, serviceName,
+ referenceName, nameOfSorR, null,
+ componentTypeFileHeaderName, compositeXmlFileHeader,
+ compositeXmlFileHeaderNoExt, intfNamespace,
+ interfaceClassNameAttrFromComponentTypeFile,
+ implClassNameAttrFromCompositeFile, implClassNamespaceAttrFromCompositeFile);
+
+// // Print out the generated DOM
+// StringWriter sw = new StringWriter();
+// OutputFormat outputFormat = new OutputFormat("xml", "UTF-8", true);
+// XMLSerializer serializer = new XMLSerializer(sw, outputFormat);
+// serializer.serialize(dom);
+// System.out.println("DOM:\n"+sw.toString());
+
+
+ createProxyCPPFromDom(outputDir, dom);
+ createProxyHeaderFromDom(outputDir, dom);
+
+ if (!forReference) {
+ createWrapperCPPFromDom(outputDir, dom);
+ createWrapperHeaderFromDom(outputDir, dom);
+ }
+
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ failed = true;
+ }
+
+ if (failed) {
+ Utils.outputDebugString("Finished! (but encountered problems)");
+ System.exit(-2);
+ }
+ }
+
+ /**
+ * This methods takes a list of methods and filters them to only contain the
+ * public methods of the given class
+ *
+ * @param methods
+ * a list of methods
+ * @param className
+ * we will return a list of only this classes methods from the
+ * methods parameter
+ * @param attrSpecified
+ * if the user does not specify one we ignore namespaces
+ * @return
+ */
+ private static List filterToPublicMethodsOfGivenClass(List methods,
+ String className, boolean useNamespace) {
+ if (methods != null && className != null && className.length() > 0) {
+ for (Iterator iter = methods.listIterator(); iter.hasNext();) {
+ Signature method = (Signature) iter.next();
+ String scope = method.getScope();
+ String sig = method.getOriginal();
+ String namespace = method.getNamespace();
+
+ String qualifiedClassName;
+ if (useNamespace && null != namespace && 0 < namespace.length()) {
+ qualifiedClassName = namespace + "::"
+ + method.getTrimClassName();
+ } else {
+ qualifiedClassName = method.getTrimClassName();
+ }
+
+ // If we are not public or the classname does not match
+ // remove...
+ if (!qualifiedClassName.equals(className)
+ || -1 == scope.indexOf("public")) {
+ iter.remove();
+ }
+ }
+ }
+ return methods;
+ }
+
+ /**
+ * Use an XSLT transformation to create a Proxy "view" of the DOM
+ * information
+ *
+ * @param outputDir
+ * where to put the C++
+ * @param dom
+ * the DOM of semantic method information
+ * @throws TransformerException
+ */
+ private static void createProxyCPPFromDom(File outputDir, Document dom)
+ throws TransformerException {
+
+ //Create the Filename from the Service Name in the DOM
+ if (dom == null) {
+ return;
+ }
+
+ String serviceOrReferenceName = "noSorRNameDefined";
+
+ String implClass = "nocompositeXmlFileHeaderDefined";
+
+ Element topNode = dom.getDocumentElement();
+ if (null != topNode) {
+ Attr attr = topNode.getAttributeNode("nameOfSorR");
+ if (attr != null) {
+ serviceOrReferenceName = attr.getNodeValue();
+ }
+
+ attr = topNode.getAttributeNode("implClass");
+ if (attr != null) {
+ implClass = attr.getNodeValue();
+ }
+ }
+
+ File proxyCPP = new File(outputDir, implClass + "_"
+ + serviceOrReferenceName + "_Proxy.cpp");
+ if (null != proxyCPP) {
+
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_GENERATED, proxyCPP
+ .getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_CREATE,
+ "Scagen creating SCA for C++ proxy implementation "
+ + proxyCPP.getAbsolutePath());
+ }
+
+ createOutputFromDom(dom, proxyCPP,
+ "org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyCPP.xsl");
+
+ }
+
+ /**
+ * Use an XSLT transformation to create a Wrapper "view" of the DOM
+ * information
+ *
+ * @param outputDir
+ * where to put the C++
+ * @param dom
+ * the DOM of semantic method information
+ * @throws TransformerException
+ */
+ private static void createWrapperCPPFromDom(File outputDir, Document dom)
+ throws TransformerException {
+
+ //Create the Filename from the Service Name in the DOM
+ if (dom == null) {
+ return;
+ }
+
+ String serviceName = "noServiceDefined";
+
+ String implClass = "nocompositeXmlFileHeaderDefined";
+
+ Element topNode = dom.getDocumentElement();
+ if (null != topNode) {
+ Attr attr = topNode.getAttributeNode("serviceName");
+ if (attr != null) {
+ serviceName = attr.getNodeValue();
+ }
+
+ attr = topNode.getAttributeNode("implClass");
+ if (attr != null) {
+ implClass = attr.getNodeValue();
+ }
+ }
+
+ File wrapperCPP = new File(outputDir, implClass + "_" + serviceName
+ + "_Wrapper.cpp");
+ if (null != wrapperCPP) {
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_GENERATED, wrapperCPP
+ .getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_CREATE,
+ "Scagen creating SCA for C++ wrapper implementation "
+ + wrapperCPP.getAbsolutePath());
+ }
+ createOutputFromDom(dom, wrapperCPP,
+ "org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperCPP.xsl");
+
+ }
+
+ /**
+ * Use an XSLT transformation to create a Proxy header "view" of the DOM
+ * information
+ *
+ * @param outputDir
+ * where to put the C++
+ * @param dom
+ * the DOM of sematic method information
+ * @throws TransformerException
+ */
+ private static void createProxyHeaderFromDom(File outputDir, Document dom)
+ throws TransformerException {
+
+ //Create the Filename from the Service Name in the DOM
+ if (dom == null) {
+ return;
+ }
+
+ String serviceOrReferenceName = "noServiceDefined";
+ String intfClass = "noInterfaceClassNameOrDefaultDefined";
+ String implClass = "noImplementationClassOrDefaultDefined";
+
+ Element topNode = dom.getDocumentElement();
+ if (null != topNode) {
+ Attr attr = topNode.getAttributeNode("nameOfSorR");
+ if (attr != null) {
+ serviceOrReferenceName = attr.getNodeValue();
+ }
+ attr = topNode.getAttributeNode("intfClass");
+ if (attr != null) {
+ intfClass = attr.getNodeValue();
+ }
+ attr = topNode.getAttributeNode("implClass");
+ if (attr != null) {
+ implClass = attr.getNodeValue();
+ }
+ }
+
+ File proxyHeader = new File(outputDir, implClass + "_"
+ + serviceOrReferenceName + "_Proxy.h");
+ if (null != proxyHeader) {
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_GENERATED, proxyHeader
+ .getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_CREATE,
+ "Scagen creating SCA for C++ proxy header "
+ + proxyHeader.getAbsolutePath());
+ }
+
+ createOutputFromDom(dom, proxyHeader,
+ "org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyHeader.xsl");
+
+ }
+
+ /**
+ * Use an XSLT transformation to create a Wrapper header "view" of the DOM
+ * information
+ *
+ * @param outputDir
+ * where to put the C++
+ * @param dom
+ * the DOM of sematic method information
+ * @throws TransformerException
+ */
+ private static void createWrapperHeaderFromDom(File outputDir, Document dom)
+ throws TransformerException {
+
+ //Create the Filename from the Service Name in the DOM
+ if (dom == null) {
+ return;
+ }
+
+ String serviceName = "noServiceDefined";
+
+ String implClass = "nocompositeXmlFileHeaderDefined";
+
+ Element topNode = dom.getDocumentElement();
+ if (null != topNode) {
+ Attr attr = topNode.getAttributeNode("serviceName");
+ if (attr != null) {
+ serviceName = attr.getNodeValue();
+ }
+
+ attr = topNode.getAttributeNode("implClass");
+ if (attr != null) {
+ implClass = attr.getNodeValue();
+ }
+ }
+
+ File wrapperHeader = new File(outputDir, implClass + "_" + serviceName
+ + "_Wrapper.h");
+
+ if (null != wrapperHeader) {
+ Utils.postEvent(Utils.DEPLOYMENT_ARTEFACT_GENERATED, wrapperHeader
+ .getAbsolutePath());
+ Utils.postEvent(Utils.EVENT_TYPE_FILE_CREATE,
+ "Scagen creating SCA for C++ wrapper header "
+ + wrapperHeader.getAbsolutePath());
+ }
+ createOutputFromDom(dom, wrapperHeader,
+ "org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperHeader.xsl");
+
+ }
+
+ /**
+ * This method will return a class loader that can see the resources that
+ * are parts of "this" package.
+ */
+ private static ClassLoader getALoader() {
+
+ LittleClass lc;
+ try {
+ lc = new LittleClass();
+ return lc.getClass().getClassLoader();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * This method will generically process the DOM using a stylesheet passed
+ * in.
+ *
+ * @param dom
+ * the source of data (the model)
+ * @param outputFile
+ * where to put the result
+ * @param xslTransformationFileName
+ * the xsl file containing the "view"
+ * @throws TransformerException
+ */
+ private static void createOutputFromDom(Document dom, File outputFile,
+ String xslTransformationFileName) throws TransformerException {
+
+ if(Options.noGenerate()){
+ return;
+ }
+
+ InputStream stream = getALoader().getResourceAsStream(
+ xslTransformationFileName);
+ StreamSource ss = new StreamSource(stream);
+ StreamResult out = new StreamResult(outputFile);
+ try {
+ Transformer xslt = txmf.newTransformer(ss);
+
+ // Unless a width is set, there will be only line breaks but no
+ // indentation.
+ // The IBM JDK and the Sun JDK don't agree on the property name,
+ // so we set them both.
+ //
+ try {
+ xslt.setOutputProperty(
+ "{http://xml.apache.org/xalan}indent-amount", "2");
+ } catch (Throwable t) {
+ //OK to ignore this, depends on XSLT engine and one will fail
+ }
+ try {
+ xslt.setOutputProperty(
+ "{http://xml.apache.org/xslt}indent-amount", "2");
+ } catch (Throwable t) {
+ //OK to ignore this, depends on XSLT engine and one will fail
+ }
+
+ DOMSource from = new DOMSource(dom);
+
+ xslt.transform(from, out);
+
+ } catch (TransformerConfigurationException e) {
+ e.printStackTrace();
+ throw (e);
+ } catch (TransformerException e) {
+ e.printStackTrace();
+ throw (e);
+ } finally {
+ try {
+ stream.close();
+ } catch (IOException e1) {
+ // unlikely but if
+ // we can't close it, we can't close it
+ }
+ }
+
+ }
+
+ //TODO clear up the parameter list below to make it smaller if
+ // possible
+ /**
+ * This method will create A DOM containing all the semantic information
+ * that it can extract from a C++ header file.
+ *
+ * @param methods
+ * a list of methods that are going into the DOM
+ * @param source
+ * the header file the methods came from
+ * @param serviceName
+ * the name of the service
+ * @referenceName the name of the reference
+ * @nameOfSorR the non null one of the two parameters above
+ * @headerClassName the name of the header class
+ * @param compositeXmlFileImplHeaderNameWithPathAndExt
+ * the source filename
+ * @param compositeXmlFileHeaderNoExtorPath
+ * the shortname of the source file
+ * @param implClass
+ * the implementation class
+ * @param intfClass
+ * the interface we are turning into a service
+ * @return
+ */
+ private static Document createDOMofMethods(List methods, File source,
+ String serviceName, String referenceName, String nameOfSorR,
+ String headerClassName,
+ String componentTypeXmlFileIntfHeaderNameWithPathAndExt,
+ String compositeXmlFileImplHeaderNameWithPathAndExt,
+ String compositeXmlFileHeaderNoExtorPath, String intfNamespace,
+ String intfClass, String implClass, String implNamespace) {
+
+ if (methods == null) {
+ return null;
+ }
+
+ // Create a DOM of the methods
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ Document document = null;
+ try {
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ document = builder.newDocument();
+
+ Element root = (Element) document.createElement(CPP_HEADER);
+
+ root.setAttribute(HEADER_NAME_ATTR, source.getPath());
+
+ document.appendChild(root);
+
+ Element intf = (Element) document.createElement(SCA_SERVICE);
+ root.appendChild(intf);
+
+ // Go through all the signatures we have collected...
+ Signature s = null;
+ for (Iterator iter = methods.iterator(); iter.hasNext();) {
+ s = (Signature) iter.next();
+
+ // Each signature is an operation
+ Element op = document.createElement(SCA_OPERATION);
+ op.setAttribute(OPERATION_NAME_ATTR, s.getMethodName());
+ intf.appendChild(op);
+
+ Parameter[] parms = s.getParameters();
+ if (parms != null) {
+
+ for (int i = 0; i < parms.length; i++) {
+ Element parm = (Element) document
+ .createElement(SCA_OPERATION_PARAMETER);
+ String type_string = parms[i].getTypeWithoutConst()
+ .toString();
+
+ type_string = type_string.replaceAll(":: ", "::");
+
+ Text text = document.createTextNode(type_string);
+ parm.appendChild(text);
+ parm.setAttribute(SCA_OPERATION_PARAMETER_NAME_ATTR,
+ parms[i].getName());
+
+ if (parms[i].getTypeWithoutConst().intern() != parms[i]
+ .getType().intern()) {
+ parm.setAttribute(
+ SCA_OPERATION_PARAMETER_CONST_ATTR, "true");
+ }
+
+ op.appendChild(parm);
+ // TO DO only really stores the value
+ // unsafely/temporarily
+ // which is fine while we handle everything at the
+ // end of parsing the "leaf" that represents that actual
+ // interface/service but the below will cause the second
+ // service
+ // processed to overwite the first one in the DOM. I we
+ // wish
+ // to do some overall processing at the end we will have
+ // to
+ // use a better more XPath like key that varies by
+ // instance
+ // of the service.
+ intf.setAttribute(SCA_INTERFACE_NAME_ATTR, s
+ .getTrimClassName());
+ }
+ }
+
+ Element rc = document.createElement(SCA_OPERATION_RETURN_TYPE);
+ rc.appendChild(document.createTextNode(s.getReturnType()
+ .toString().replaceAll(":: ", "::")));
+ op.appendChild(rc);
+
+ root.appendChild(intf);
+ }
+
+ // Set the name of the Service
+ // here, if we are not passed one we use
+ // the classname from the last header function signature...
+ if (serviceName == null && s != null) {
+ serviceName = s.getTrimClassName();
+ }
+
+ // this is used for the proxy file name but we need to
+ // use the reference name if this is pulled in due to it
+ // being a reference!!!
+ if (serviceName != null)
+ root.setAttribute("serviceName", serviceName);
+ if (referenceName != null)
+ root.setAttribute("referenceName", referenceName);
+ if (nameOfSorR != null)
+ root.setAttribute("nameOfSorR", nameOfSorR);
+
+ if (implClass != null) {
+ root.setAttribute("implClass", implClass);
+ } else {
+ root.setAttribute("implClass", compositeXmlFileHeaderNoExtorPath);
+ }
+
+ if (implClass != null) {
+ root.setAttribute("implNamespace", implNamespace);
+ }
+
+ // default class name to the name of the header...
+ if (headerClassName == null && source != null) {
+ headerClassName = source.getName().replaceAll(
+ "\\.h|\\.hpp|\\.h++", "");
+ }
+ root.setAttribute("headerClassName", headerClassName);
+
+ if (null == intfClass) {
+ intfClass = headerClassName;
+ }
+
+ if (null != intfNamespace) {
+ root.setAttribute("namespace", intfNamespace);
+ if (null != intfClass && !intfClass.startsWith(intfNamespace)) {
+ intfClass = intfNamespace + "::" + intfClass;
+ }
+ }
+
+ root.setAttribute("intfClass", intfClass);
+
+ if (componentTypeXmlFileIntfHeaderNameWithPathAndExt == null) {
+ componentTypeXmlFileIntfHeaderNameWithPathAndExt = "componentTypeHeader";
+ }
+ root.setAttribute("componentTypeHeader",
+ componentTypeXmlFileIntfHeaderNameWithPathAndExt);
+
+ if (compositeXmlFileImplHeaderNameWithPathAndExt == null) {
+ compositeXmlFileImplHeaderNameWithPathAndExt = "compositeXmlFileImplHeader";
+ }
+ root.setAttribute("compositeXmlFileHeader",
+ compositeXmlFileImplHeaderNameWithPathAndExt);
+
+ if (compositeXmlFileHeaderNoExtorPath == null) {
+ compositeXmlFileHeaderNoExtorPath = "compositeXmlFileHeaderNoExt";
+ }
+ root.setAttribute("compositeXmlFileHeaderNoExt",
+ compositeXmlFileHeaderNoExtorPath);
+
+ } catch (ParserConfigurationException pce) {
+ // Parser with specified options can't be built
+ pce.printStackTrace();
+ }
+
+ return document;
+
+ }
+
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/XMLFileActor.java b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/XMLFileActor.java
new file mode 100644
index 0000000000..dd260c9787
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/XMLFileActor.java
@@ -0,0 +1,208 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* @version $Rev$ $Date$ */
+
+package org.apache.tuscany.sca.cpp.tools.services;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+
+import org.apache.tuscany.sca.cpp.tools.common.FileActor;
+import org.apache.tuscany.sca.cpp.tools.common.Utils;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+/**
+ * The purpose of this abstract class is to provide a home for the standard
+ * processing that is involved in turning a XML file into an internal DOM.
+ */
+public abstract class XMLFileActor implements FileActor {
+
+ protected static Map handlers = new HashMap();
+
+ protected static Map parameters = new HashMap();
+
+ public boolean failed;
+
+ private int filesActedOn=0;
+
+ protected static TransformerFactory transformerFactory = TransformerFactory
+ .newInstance();
+
+ /**
+ * This method is the main FileActor method
+ *
+ * @see FileActor#actOnFile(File, File, int) Here we create an initial DOM
+ * and kick off the processing (using the handler map that has been set
+ * up by the concrete subclass).
+ *
+ * @param compositeXML
+ * the composite or fragment file
+ * @param target
+ * the target directory
+ * @param depth
+ * not uesed here but in the
+ * @see FileActor#actOnFile(File, File, int) interface to allow for
+ * recursive diving into a directory structure.
+ */
+ public void actOnFile(File compositeXML, File target, int depth)
+ throws Exception {
+
+ if (null == compositeXML || null == target) {
+ return;
+ }
+
+ filesActedOn++;
+
+ parameters.put("sourceFile", compositeXML);
+ parameters.put("targetFile", target);
+
+ if (transformerFactory.getFeature(DOMSource.FEATURE)
+ && transformerFactory.getFeature(DOMResult.FEATURE)) {
+ Document dom = createDomFromXMLFile(compositeXML);
+ if (dom != null) {
+ parameters.put("targetDirectoryFile", target);
+ DomHandler.handleDom(dom, handlers, parameters);
+ }
+ }
+ }
+
+ /**
+ * This method builds an in memory DOM from an XML file
+ *
+ * @param xmlSourceFile
+ * the XML file we are handling
+ * @return the resulting document
+ */
+ protected Document createDomFromXMLFile(File xmlSourceFile) {
+ Document dom = null;
+ DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
+ //We do not validate via f.setValidating(true);
+ f.setNamespaceAware(true);
+
+ try {
+ DocumentBuilder parser = f.newDocumentBuilder();
+ dom = parser.parse(xmlSourceFile);
+ } catch (SAXException sxe) {
+ String path;
+ try {
+ path = xmlSourceFile.getCanonicalPath();
+ } catch (IOException e) {
+ path = xmlSourceFile.getPath();
+ }
+ Utils.screenMessage("There has been a SAXException of type "
+ + sxe.getLocalizedMessage());
+ if (null != xmlSourceFile) {
+ Utils.screenMessage(" when processing file " + path);
+ } else {
+ Utils.screenMessage(" as the input file is null.");
+ }
+
+// Leave for possible future debug option
+// Utils.screenMessage(" The returned Java exception is below.");
+// if (sxe.getException() != null)
+// sxe.getException().printStackTrace();
+// else
+// sxe.printStackTrace();
+ } catch (ParserConfigurationException pce) {
+ String path;
+ try {
+ path = xmlSourceFile.getCanonicalPath();
+ } catch (IOException e) {
+ path = xmlSourceFile.getPath();
+ }
+ Utils
+ .screenMessage("There has been a ParserConfigurationException of type "
+ + pce.getLocalizedMessage());
+ if (null != xmlSourceFile) {
+ Utils.screenMessage(" when processing file " + path);
+ } else {
+ Utils.screenMessage(" as the input file is null.");
+ }
+
+// Leave for possible future debug option
+// Utils.screenMessage(" The returned Java exception is below.");
+// pce.printStackTrace();
+
+ } catch (IOException ioe) {
+ String path;
+ try {
+ path = xmlSourceFile.getCanonicalPath();
+ } catch (IOException e) {
+ path = xmlSourceFile.getPath();
+ }
+
+ Utils.screenMessage("Unable to open file " + path);
+ Utils.screenMessage(this.getContextMessage());
+
+
+
+ }
+
+ return dom;
+ }
+
+ /**
+ * @return an error message - usually over-ridden.
+ */
+ private String getContextMessage() {
+ return "Check the file exists and can be read.";
+ }
+
+ /**
+ * Set a parameter
+ *
+ * @param name
+ * @param value
+ */
+ public void setParameter(String name, Object value) {
+ parameters.put(name, value);
+ }
+
+ /**
+ * Get a parameter
+ *
+ * @param name
+ * @param value
+ * @return the value of the parameter
+ */
+ public Object getParameter(String name, Object value) {
+ return parameters.get(name);
+ }
+
+
+
+ /**
+ * @return Returns the filesActedOn.
+ */
+ public int getFilesActedOn() {
+ return filesActedOn;
+ }
+} \ No newline at end of file
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html
new file mode 100644
index 0000000000..ea15ca587b
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html
@@ -0,0 +1,159 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<html>
+
+<head>
+<title>Design documentation for org\apache\tuscany\sca\cpp\tools\services</title>
+</head>
+
+<body lang=EN-GB>
+
+<div class=Section1>
+
+<h1>Overview</h1>
+
+
+
+<p>This package contains classes that generate C++ wrappers and
+proxies for C++ implementations of SCA services. </p>
+
+<h2>What the package does</h2>
+
+<p>The Scagen class main method will take in an input and
+output directory name. The input directory is taken to be the SCA composite root
+directory.  The tool will generate the wrapper and proxy headers and methods
+bodies in the output directory. </p>
+
+<p>These proxies and wrappers enable the SCA for C++ runtime to
+act as a conduit for SCA C++ calls in a type free manner. Client code can call
+the type specific functions that are in the generated proxy classes. The call
+is marshalled into a generic format and a SCA for C++ runtime function with a
+standard signature is invoked. The details of the call are passed as data. </p>
+
+<p>On the other end of the runtime, a generated function with a
+standard signature is called, this function will inspect the data that
+represents the call’s method name and call the appropriate type specific
+function in the C++ implementation. </p>
+
+<h2>The Input Data Used</h2>
+
+<p>The input directory passed to the Scagen method is taken to
+be the SCA composite root directory. All the sca.composite and .fragment files in
+that directory are inspected to resolve all the &lt;component/&gt; elements
+within them. </p>
+
+<p>Each &lt;component/&gt; element found is inspected to see if
+it has a &lt;implementation.cpp/&gt; element within it. </p>
+
+<p>Each &lt;implementation.cpp/&gt; element should have a
+header attribute that represents a C++ header file that contains function
+prototypes for the C++ implementation of the service. An optional class
+attribute can be used to select one class if more than one that is present in
+the header file. The default class is the one with the same name as the header
+file. The tool will verify that the implementation header contains an
+appropriate class prototype. </p>
+
+
+
+<p>The directory that contains the implementation header should
+also contain a matching .componentType file for the equivalent SCA component. So
+for example, a MyServiceImpl.h file would have a corresponding MyServiceImpl.componentType
+file in the same directory. </p>
+
+
+
+<p>Each componentType file is inspected for &lt;service/&gt;
+and &lt;reference/&gt; elements. For each &lt;service/&gt; element that is
+found that contains a &lt;interface.cpp/&gt; element within it,</p>
+
+<p>the header attribute of the &lt;interface.cpp/&gt; is taken
+as the filename of the C++ interface header for the SCA service.  This C++
+header file is opened and used as a means for specifying the SCA service
+resulting in an appropriate wrapper and proxy being generated for this service
+interface. Both method bodies and headers are generated in the given output
+directory. The processing of a &lt;reference/&gt; element is the same except
+that only a proxy header and implementation are generated. </p>
+
+
+
+
+
+<h2>Outline Design: How it Works</h2>
+
+
+
+<p>The basic approach is to scan in the XML files by first
+creating a DOM document tree of them and then recursively rifling through the DOM 
+with some generic code in the XMLFileActorClass by default this processing will
+build up a map which maps the XPath location of attributes to their values.
+Additionally subclasses can add to a “handlers map” which maps from the name of
+a particular element to an object that implements the DomNodeHandler interface.
+If the XMLFileActor code comes across any element that has an equivalent handler
+in the handler map the objects handleNode method will be called. </p>
+
+<p>Typically the DomNodeHandler’s handle node interface will
+use XPath to pull out the parameters that it is interested in from the
+parameters map that is being built up by the generic code. </p>
+
+<p>This design was chosen as the Java level specified for the
+original implementation did not have direct XPath query of XML data but it was
+known that this would be available in Java 1.5 onwards. The design allows the
+DOM and parameters map handling to be replaced in the future with JRE 1.5 code
+with less impact on the rest of the code.</p>
+
+
+
+<p>The processing leads to the parsing of the C++ interface
+files using the org\apache\tuscany\sca\cpp\tools\common package. This results
+in a Headers object</p>
+
+<p>that contains a List of Signature objects, each one
+representing a function prototype found in the header. </p>
+
+
+
+<p>We are aiming to get all the semantic data we want to use
+into a DOM document (this represents the model of our input data) and then use
+XSLT to create the 4 different views of this data:</p>
+
+<p>Proxy C++ header</p>
+
+<p>Proxy C++  body</p>
+
+<p>Wrapper C++ header</p>
+
+<p>Wrapper C++ body</p>
+
+
+
+<p>So we prepopulate the DOM with parameter data that comes
+from the XML files and then iterate through the Signatures that are returned
+from the C++ header parser transferring the useful data into the DOM. </p>
+
+
+
+<p>We than use 4 XSLT stylesheets to generate the C++ output
+files as required. </p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyCPP.xsl b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyCPP.xsl
new file mode 100644
index 0000000000..b45fbb7b40
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyCPP.xsl
@@ -0,0 +1,281 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!--
+
+ TODO There is duplication in the "..no_parms" templates with
+ the equivalent templates they are based on - that it would be
+ fairly easy to factor out.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- Part of the org.apache.tuscany.sca.cpp.tools.services packages
+
+ This stylesheet creates the CPP implementation of the
+ proxy body for a given SCA service
+ -->
+<xsl:output method="text"/>
+
+<!-- We do not generate output sourced from cppScopes -->
+<xsl:template match="cppScope"></xsl:template>
+
+<!-- We do not generate output sourced from private scaOperations -->
+<xsl:template match="scaOperation[@cppScope='private']">
+</xsl:template>
+
+<!-- We do not generate output sourced from the operation return types -->
+<xsl:template match="scaOperationReturnType">
+</xsl:template>
+
+
+<!--
+ CPP Header/Root
+-->
+<xsl:template match="cppHeader">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+<xsl:apply-templates select="scaService" mode="include_header"/>
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;<!-- thats the prologue over nad done with
+ now continue with the scaServiceElement -->
+<xsl:apply-templates/> <!-- should go on to generic scaService below -->
+</xsl:template>
+
+<!-- -->
+<!-- Service -->
+<!-- -->
+<xsl:template match="scaService">
+<xsl:variable name="clazz">
+ <xsl:value-of select="../@implClass"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="../@nameOfSorR"/>
+ <xsl:text>_Proxy</xsl:text>
+</xsl:variable>
+<xsl:text>
+extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ </xsl:text><xsl:value-of select="$clazz"/>
+<xsl:text>* </xsl:text>
+<xsl:value-of select="$clazz"/>
+<xsl:text>_Factory(ServiceWrapper* target)
+ {
+ return new </xsl:text><xsl:value-of select="$clazz"/><xsl:text>(target);
+ }
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ void </xsl:text>
+<xsl:value-of select="$clazz"/>
+<xsl:text>_Destructor(void* proxy)
+ {
+ delete (</xsl:text><xsl:value-of select="$clazz"/><xsl:text>*)proxy;
+ }
+}
+
+</xsl:text>
+<xsl:value-of select="$clazz"/><xsl:text>::</xsl:text><xsl:value-of select="$clazz"/>(ServiceWrapper* targ) : target(targ)
+{
+}
+
+<xsl:value-of select="$clazz"/><xsl:text>::~</xsl:text><xsl:value-of select="$clazz"/>()
+{
+ if (target)
+ delete target;
+}<!--
+OK we have done the stuff that is not specific to any function in the service
+now we can do another apply-templates to pick up on the 0, 1 or more scaOperation
+DOM nodes that each relate to a function in the service
+ -->
+<xsl:apply-templates/>
+<!-- Always make sure we have a (visible) final newline -->
+<xsl:text>
+
+</xsl:text>
+</xsl:template>
+
+<!-- This template is just a small function that will generate the
+ #include that pulls in the correct C++ header
+ -->
+<xsl:template match="scaService" mode="include_header">
+<xsl:variable name="clazz">
+ <xsl:value-of select="../@implClass"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="../@nameOfSorR"/>
+ <xsl:text>_Proxy</xsl:text>
+</xsl:variable>
+<xsl:text>#include "</xsl:text>
+<xsl:value-of select="$clazz"/>
+<xsl:text>.h"</xsl:text>
+</xsl:template>
+
+
+
+<!-- -->
+<!-- Operation -->
+<!-- -->
+<xsl:template match="scaOperation">
+<xsl:variable name="clazz">
+ <xsl:value-of select="../../@implClass"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="../../@nameOfSorR"/>
+ <xsl:text>_Proxy</xsl:text>
+</xsl:variable>
+
+<!-- ignore the constructor and destructor -->
+<xsl:if test="@operationNameAttr != $clazz
+ and @operationNameAttr != concat('~', $clazz)" >
+<xsl:text>
+</xsl:text>
+<xsl:value-of select="scaOperationReturnType"/>
+<xsl:text> </xsl:text>
+<xsl:value-of select="$clazz"/><xsl:text>::</xsl:text>
+<xsl:value-of select="@operationNameAttr"/><xsl:text>(</xsl:text>
+<xsl:for-each select="scaOperationParameter">
+<xsl:if test=".!='void'">
+ <xsl:variable name="scaOperationParameterNameAttr">
+ <xsl:value-of select="concat('arg', position()-1 )"/>
+ </xsl:variable>
+ <xsl:variable name="isConst">
+ <xsl:value-of select="@scaOperationParameterConstAttr"/>
+ </xsl:variable>
+ <xsl:if test="contains($isConst,'true')">const</xsl:if><xsl:text> </xsl:text>
+ <xsl:value-of select="."/> <!-- get the actual type -->
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$scaOperationParameterNameAttr"/>
+ <xsl:choose>
+ <xsl:when test="position()=last()">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:if> <!-- test=".!='void'" -->
+
+</xsl:for-each>
+<xsl:text>)
+{</xsl:text>
+<xsl:call-template name="proxy_method_body"/>
+<xsl:text>
+}
+</xsl:text>
+</xsl:if>
+</xsl:template>
+
+
+<xsl:template name="proxy_method_body">
+ <xsl:variable name="noOfParms">
+ <xsl:choose>
+ <xsl:when test=".='void'">
+<xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="last()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+<xsl:text>
+ Operation operation("</xsl:text>
+ <xsl:value-of select="@operationNameAttr"/>
+ <xsl:text>");</xsl:text>
+ <xsl:if test="$noOfParms!=0">
+ <xsl:for-each select="scaOperationParameter">
+ <xsl:call-template name="proxy_method_body_set_parameter"/>
+ </xsl:for-each>
+ </xsl:if>
+ <xsl:call-template name="proxy_method_body_prepare_return_var"/>
+ <xsl:text>
+ target-&gt;invoke(operation);</xsl:text>
+ <xsl:call-template name="proxy_method_body_return"/>
+</xsl:template>
+
+
+<xsl:template name="proxy_method_body_return">
+ <xsl:variable name="type">
+ <xsl:value-of select="scaOperationReturnType/text()"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$type='void'"><!-- nothing -->
+ <xsl:text>
+ return;</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($type, '&amp;')"><!-- reference -->
+ <xsl:variable name="type_no_amp">
+ <xsl:value-of select="substring-before($type, '&amp;')"/>
+ </xsl:variable>
+ <xsl:text>
+ return *(</xsl:text><xsl:value-of select="$type_no_amp"/><xsl:text>*)operation.getReturnValue();</xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- simple type -->
+ <xsl:text>
+ return *(</xsl:text><xsl:value-of select="$type"/><xsl:text>*)operation.getReturnValue();</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="proxy_method_body_prepare_return_var">
+ <xsl:variable name="type">
+ <xsl:value-of select="scaOperationReturnType/text()"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$type='void'"><!-- nothing -->
+ <!-- nothing -->
+ </xsl:when>
+ <xsl:when test="contains($type, '&amp;')"><!-- reference -->
+ </xsl:when>
+ <xsl:otherwise>
+<xsl:text>
+ </xsl:text> <xsl:value-of select="$type"/><xsl:text> ret;
+ operation.setReturnValue(&amp;ret);</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+
+<xsl:template name="proxy_method_body_set_parameter">
+ <xsl:variable name="scaOperationParameterNameAttrInner">
+ <xsl:value-of select="concat('arg', position()-1 )"/>
+ </xsl:variable>
+ <xsl:variable name="type">
+ <xsl:value-of select="."/>
+ </xsl:variable>
+ operation.addParameter(&amp;<xsl:value-of select="$scaOperationParameterNameAttrInner"/><xsl:text>);</xsl:text>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyHeader.xsl b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyHeader.xsl
new file mode 100644
index 0000000000..2f5edb3a93
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyHeader.xsl
@@ -0,0 +1,228 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- Part of the org.apache.tuscany.sca.cpp.tools.services packages
+ -
+ - This stylesheet creates the CPP implementation of the
+ - proxy header for a given SCA service
+ -->
+
+ <xsl:output method="text" />
+
+ <!-- Delete cppScopes -->
+ <xsl:template match="cppScope"></xsl:template>
+
+ <!-- Delete private methods cppScopes -->
+ <xsl:template match="scaOperation[@cppScope='private']">
+ </xsl:template>
+
+ <!-- Delete private methods cppScopes -->
+ <xsl:template match="scaOperationReturnType"></xsl:template>
+
+
+ <!-- -->
+ <!-- CPP Header/Root -->
+ <!-- -->
+ <xsl:template match="cppHeader">
+ <xsl:variable name="class">
+ <xsl:value-of select="concat(@implClass, '_', @nameOfSorR, '_Proxy')"/>
+ </xsl:variable>
+<xsl:text>/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</xsl:text>
+ <xsl:call-template name="ifndef_start">
+ <xsl:with-param name="class"
+ select="$class"/>
+ </xsl:call-template>
+
+
+ <xsl:call-template name="include_headers">
+ <xsl:with-param name="componentTypeHeader"
+ select="@componentTypeHeader"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="scaService" mode="class_body"/>
+
+ <xsl:call-template name="ifndef_end">
+ <xsl:with-param name="class"
+ select="$class"/>
+ </xsl:call-template>
+<!-- Always make sure we have a (visible) final newline -->
+<xsl:text>
+
+</xsl:text>
+</xsl:template>
+
+
+<!-- Here are the subroutine templates in order -->
+
+ <xsl:template name="ifndef_start">
+ <!--For example,
+ #ifndef CustomerInfoImpl_CustomerInfoService_Proxy_h
+ #define CustomerInfoImpl_CustomerInfoService_Proxy_h
+ -->
+ <xsl:param name="class"/>
+ <xsl:text>#ifndef </xsl:text><xsl:value-of select="$class"/><xsl:text>_h</xsl:text>
+<!-- newline -->
+<xsl:text>
+</xsl:text>
+ <xsl:text>#define </xsl:text><xsl:value-of select="$class"/><xsl:text>_h</xsl:text>
+<!-- newline -->
+<xsl:text>
+
+</xsl:text>
+ <xsl:text>#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif </xsl:text>
+<!-- newline -->
+<xsl:text>
+
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="include_headers">
+ <!--For example,
+ #include "CustomerInfo.h"
+ #include "tuscany/sca/core/ServiceWrapper.h"
+ -->
+ <xsl:param name="componentTypeHeader"/>
+ <xsl:text>#include "</xsl:text><xsl:value-of select="translate($componentTypeHeader,'\','/')"/><xsl:text>"</xsl:text>
+<!-- newline -->
+<xsl:text>
+</xsl:text>
+ <xsl:text>#include "tuscany/sca/core/ServiceWrapper.h"</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="scaService" mode="class_body">
+ <!--For example
+ class proxyclassname : public interface_class
+ {
+ constructor
+ destructor
+ then apply operation templates for operations
+ };
+
+ E.g. Specifically
+
+ class CustomerInfoImpl_CustomerInfoService_Proxy : public CustomerInfo
+ {
+ public:
+ CustomerInfoImpl_CustomerInfoService_Proxy(tuscany::sca::ServiceWrapper*);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Proxy();
+ virtual const char* getCustomerInformation(const char* customerID);
+ private:
+ tuscany::sca::ServiceWrapper* target;
+ };
+ -->
+ <!-- TODO second definition, remove? -->
+ <xsl:variable name="class">
+ <xsl:value-of select="concat(../@implClass, '_', ../@nameOfSorR, '_Proxy')"/>
+ </xsl:variable>
+<xsl:text>
+
+class </xsl:text>
+<xsl:value-of select="$class"/>
+<xsl:text> : public </xsl:text><xsl:value-of select="../@intfClass"/>
+<xsl:text>
+{
+public:
+ </xsl:text><xsl:value-of select="$class"/><xsl:text>(tuscany::sca::ServiceWrapper*);</xsl:text>
+ <xsl:text>
+ virtual ~</xsl:text><xsl:value-of select="$class"/><xsl:text>();
+</xsl:text>
+ <!-- operations -->
+ <xsl:apply-templates/>
+<xsl:text>private:
+ tuscany::sca::ServiceWrapper* target;
+};
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="ifndef_end">
+ <!--For example,
+ #endif // CustomerInfoImpl_CustomerInfoService_Proxy_h
+ -->
+ <xsl:param name="class"/>
+ <xsl:text>
+#endif // </xsl:text><xsl:value-of select="$class"/><xsl:text>_h</xsl:text>
+ </xsl:template>
+
+
+
+
+
+
+<!-- Operation -->
+<!--For example
+ virtual const char* getCustomerInformation(const char* customerID);
+-->
+<xsl:template match="scaOperation">
+<xsl:variable name="class">
+ <xsl:value-of select="concat(../../@implClass, '_', ../../@nameOfSorR, '_Proxy')"/>
+</xsl:variable>
+<xsl:if test="@operationNameAttr != $class
+ and @operationNameAttr != concat('~', $class)" >
+<xsl:text> virtual </xsl:text>
+<xsl:value-of select="scaOperationReturnType"/>
+<xsl:text> </xsl:text>
+<xsl:value-of select="@operationNameAttr"/><xsl:text>(</xsl:text>
+<xsl:for-each select="scaOperationParameter">
+ <xsl:variable name="isConst">
+ <xsl:value-of select="@scaOperationParameterConstAttr"/>
+ </xsl:variable>
+ <xsl:variable name="noOfParms">
+ <xsl:value-of select="last()"/>
+ </xsl:variable>
+ <xsl:if test="contains($isConst,'true')">const</xsl:if><xsl:text> </xsl:text>
+ <xsl:value-of select="."/> <!-- get the actual type -->
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@scaOperationParameterNameAttr"/>
+ <xsl:choose>
+ <xsl:when test="position()=last()"></xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+<xsl:text>);
+</xsl:text>
+</xsl:if>
+</xsl:template>
+</xsl:stylesheet>
+
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperCPP.xsl b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperCPP.xsl
new file mode 100644
index 0000000000..915549788d
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperCPP.xsl
@@ -0,0 +1,292 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- Part of the org.apache.tuscany.sca.cpp.tools.services packages
+ -
+ - This stylesheet creates the CPP implementation of the
+ - wrapper body for a given SCA service
+ -->
+<xsl:output method="text"/>
+
+<!-- Delete cppScopes -->
+<xsl:template match="cppScope"></xsl:template>
+
+<!-- Delete private methods cppScopes -->
+<xsl:template match="scaOperation[@cppScope='private']">
+</xsl:template>
+
+<!-- Don't act on return types -->
+<xsl:template match="scaOperationReturnType">
+</xsl:template>
+
+
+<!-- -->
+<!-- CPP Header/Root -->
+<!-- -->
+<xsl:template match="cppHeader">/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+<xsl:apply-templates select="scaService" mode="include_header"/>
+
+#include "osoa/sca/sca.h"
+using namespace osoa::sca;
+using namespace tuscany::sca;
+
+<xsl:if test="not(@implNamespace = '')">using <xsl:value-of select="@implNamespace"/><xsl:value-of select="@implClass"/>;</xsl:if>
+<xsl:text><!-- newline -->
+
+</xsl:text>
+<!-- thats the prologue over and done with
+ now continue with the scaServiceElement -->
+<xsl:apply-templates/> <!-- will be applied to scaService -->
+<!-- Always make sure we have a final newline -->
+<xsl:text>
+
+</xsl:text>
+</xsl:template>
+
+<!-- -->
+<!-- Service -->
+<!-- -->
+<xsl:template match="scaService">
+<xsl:variable name="class">
+ <xsl:value-of select="../@implClass"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="../@serviceName"/>
+ <xsl:text>_Wrapper</xsl:text>
+</xsl:variable>
+<xsl:text>extern "C"
+{
+
+ #if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+ #endif
+ </xsl:text><xsl:value-of select="$class"/>
+<xsl:text>* </xsl:text>
+<xsl:value-of select="$class"/>
+<xsl:text>_Factory(tuscany::sca::model::Service* target)
+ {
+ return new </xsl:text><xsl:value-of select="$class"/><xsl:text>(target);
+ }
+}
+
+</xsl:text>
+<xsl:value-of select="$class"/><xsl:text>::</xsl:text><xsl:value-of select="$class"/><xsl:text>(Service* target) : CPPServiceWrapper(target)
+{
+ impl = (</xsl:text><xsl:value-of select="../@implClass"/><xsl:text>*)getImplementation();
+}
+
+</xsl:text>
+<xsl:value-of select="$class"/><xsl:text>::~</xsl:text><xsl:value-of select="$class"/><xsl:text>()
+{
+ releaseImplementation();
+}
+
+void* </xsl:text>
+<xsl:value-of select="$class"/><xsl:text>::newImplementation()
+{
+ return new </xsl:text><xsl:value-of select="../@implClass"/><xsl:text>;
+}
+
+void </xsl:text>
+<xsl:value-of select="$class"/><xsl:text>::deleteImplementation()
+{
+ delete impl;
+}
+
+void </xsl:text><xsl:value-of select="$class"/><xsl:text>::invokeService(Operation&amp; operation)
+{
+ const string&amp; operationName = operation.getName();
+
+</xsl:text>
+<xsl:apply-templates/><!-- an if statment for each operation -->
+<xsl:text>
+
+ throw ServiceRuntimeException("Invalid operation");
+
+}</xsl:text>
+</xsl:template>
+
+<xsl:template match="scaService" mode="include_header">
+<xsl:variable name="class">
+ <xsl:value-of select="../@implClass"/>
+ <xsl:text>_</xsl:text>
+ <xsl:value-of select="../@serviceName"/>
+ <xsl:text>_Wrapper</xsl:text>
+</xsl:variable>
+<xsl:text>#include "</xsl:text>
+<xsl:value-of select="$class"/>
+<xsl:text>.h"</xsl:text>
+</xsl:template>
+
+<!-- -->
+<!-- Operation -->
+<!-- -->
+<xsl:template match="scaOperation">
+<!--For example
+ if (operationName == "getCustomerInformation")
+ {
+ operation.setReturnValue(impl->getCustomerInformation((const char*)parms[0]));
+ return;
+ }
+-->
+<xsl:if test="@operationNameAttr != ../../@intfClass
+ and @operationNameAttr != concat('~', ../../@intfClass)" >
+<xsl:text> if (operationName == "</xsl:text>
+<xsl:value-of select="@operationNameAttr"/>
+<xsl:text>")
+ {
+</xsl:text>
+ <xsl:call-template name="this_operation_body"/>
+<xsl:text>
+ }
+</xsl:text>
+
+</xsl:if>
+</xsl:template>
+
+<xsl:template name="this_operation_body">
+<xsl:if test="./scaOperationParameter/text() != 'void' ">
+ <xsl:if test="normalize-space(./scaOperationParameter/text()) != ' ' ">
+ <xsl:if test="./scaOperationParameter/text() != '' ">
+ <xsl:for-each select="scaOperationParameter">
+ <xsl:call-template name="prepare_parameter_n"/>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:if>
+</xsl:if>
+<xsl:call-template name="invoke_for_return_type"/>
+<xsl:text>
+ return;</xsl:text>
+</xsl:template>
+
+<xsl:template name="prepare_parameter_n">
+ <xsl:variable name="isConst">
+ <xsl:value-of select="@scaOperationParameterConstAttr"/>
+ </xsl:variable>
+ <xsl:variable name="type">
+ <xsl:value-of select="."/>
+ </xsl:variable>
+<xsl:text> </xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains($type, '&amp;')"><!-- reference -->
+ <xsl:variable name="type_no_amp">
+ <xsl:value-of select="substring-before($type, '&amp;')"/>
+ </xsl:variable>
+ <xsl:value-of select="$type"/><xsl:text> p</xsl:text><xsl:value-of select="position()-1"/><xsl:text> = *(</xsl:text><xsl:value-of select="$type_no_amp"/>
+ <xsl:text>*)operation.getParameterValue(</xsl:text><xsl:value-of select="position()-1"/><xsl:text>);
+</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($type, '*')"><!-- pointer -->
+ <xsl:if test="contains($isConst,'true')">const </xsl:if>
+ <xsl:value-of select="."/><xsl:text> p</xsl:text><xsl:value-of select="position()-1"/><xsl:text> = *(</xsl:text>
+ <xsl:if test="contains($isConst,'true')">const</xsl:if><xsl:text> </xsl:text>
+ <xsl:value-of select="$type"/>
+ <xsl:text>*)operation.getParameterValue(</xsl:text><xsl:value-of select="position()-1"/><xsl:text>);
+</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($type, 'DataObjectPtr')"><!-- DataObjectPtr -->
+ <xsl:text>DataObjectPtr&amp; p</xsl:text><xsl:value-of select="position()-1"/><xsl:text> = *(DataObjectPtr*)operation.getParameterValue(</xsl:text><xsl:value-of select="position()-1"/><xsl:text>);</xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- simple type -->
+ <xsl:if test="contains($isConst,'true')">const </xsl:if><xsl:value-of select="$type"/><xsl:text>&amp; p</xsl:text><xsl:value-of select="position()-1"/><xsl:text> = *(</xsl:text>
+ <xsl:if test="contains($isConst,'true')">const</xsl:if><xsl:text> </xsl:text>
+ <xsl:value-of select="$type"/>
+ <xsl:text>*)operation.getParameterValue(</xsl:text><xsl:value-of select="position()-1"/><xsl:text>);
+</xsl:text>
+
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="invoke_for_return_type">
+ <xsl:variable name="type">
+ <xsl:value-of select="./scaOperationReturnType/text()"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- VOID -->
+ <xsl:when test="$type='void'">
+<xsl:text> </xsl:text>
+ <xsl:call-template name="impl_arrow_op_brackets_and_parms"/><xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($type, '&amp;')"><!-- reference -->
+ <xsl:text> </xsl:text><xsl:value-of select="$type"/><xsl:text> ret = </xsl:text><xsl:call-template name="impl_arrow_op_brackets_and_parms"/><xsl:text>;</xsl:text>
+ <xsl:text>
+ operation.setReturnValue(&amp;ret);</xsl:text>
+ </xsl:when>
+ <xsl:otherwise><!-- simple type -->
+ <xsl:text>
+ if(operation.getReturnValue() != NULL)
+ {
+ *(</xsl:text><xsl:value-of select="$type"/><xsl:text>*)operation.getReturnValue() = </xsl:text><xsl:call-template name="impl_arrow_op_brackets_and_parms"/><xsl:text>;
+ }
+ else
+ {
+ </xsl:text><xsl:value-of select="$type"/><xsl:text>* ret = new </xsl:text><xsl:value-of select="$type"/><xsl:text>;
+ *ret = </xsl:text><xsl:call-template name="impl_arrow_op_brackets_and_parms"/><xsl:text>;
+ operation.setReturnValue((const </xsl:text><xsl:value-of select="$type"/><xsl:text>*)ret);
+ }</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="impl_arrow_op_brackets_and_parms"><!-- context is "scaOperation" -->
+ <xsl:text>impl-></xsl:text><xsl:value-of select="./@operationNameAttr"/><xsl:text>(</xsl:text>
+<xsl:if test="./scaOperationParameter/text() != 'void' ">
+ <xsl:if test="./scaOperationParameter/text() != '' ">
+ <xsl:if test="normalize-space(./scaOperationParameter/text()) != ' ' ">
+ <xsl:for-each select="scaOperationParameter">
+ <xsl:call-template name="parameter_for_parameter_list"/>
+ </xsl:for-each>
+</xsl:if>
+</xsl:if>
+</xsl:if>
+<xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template name="parameter_for_parameter_list">
+<xsl:text>p</xsl:text><xsl:value-of select="position()-1"/>
+ <xsl:choose>
+ <xsl:when test="position()=last()"></xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+</xsl:stylesheet>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperHeader.xsl b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperHeader.xsl
new file mode 100644
index 0000000000..c8157fe2f6
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperHeader.xsl
@@ -0,0 +1,191 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+<!-- Part of the org.apache.tuscany.sca.cpp.tools.services packages
+ -
+ - This stylesheet creates the CPP implementation of the
+ - wrapper header for a given SCA service
+ -->
+ <xsl:output method="text" />
+
+ <!-- Delete cppScopes -->
+ <xsl:template match="cppScope"></xsl:template>
+
+ <!-- Delete private methods cppScopes -->
+ <xsl:template match="scaOperation[@cppScope='private']">
+ </xsl:template>
+
+ <!-- Delete private methods cppScopes -->
+ <xsl:template match="scaOperationReturnType"></xsl:template>
+
+
+ <!-- -->
+ <!-- CPP Header/Root -->
+ <!-- -->
+ <xsl:template match="cppHeader">
+ <xsl:variable name="class">
+ <xsl:value-of select="concat(@implClass, '_', @serviceName, '_Wrapper')"/>
+ </xsl:variable>
+<xsl:text>/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+</xsl:text>
+ <xsl:call-template name="ifndef_start">
+ <xsl:with-param name="class"
+ select="$class"/>
+ </xsl:call-template>
+
+
+ <xsl:call-template name="include_headers">
+ <xsl:with-param name="header"
+ select="@compositeXmlFileHeader"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="scaService" mode="class_body"/>
+
+ <xsl:call-template name="ifndef_end">
+ <xsl:with-param name="class"
+ select="$class"/>
+ </xsl:call-template>
+<!-- Always make sure we have a (visible) final return -->
+<xsl:text>
+
+</xsl:text>
+</xsl:template>
+
+
+<!-- Here are the subroutine templates in order -->
+
+ <xsl:template name="ifndef_start">
+ <!--For example,
+ #ifndef CustomerInfoImpl_CustomerInfoService_Wrapper_h
+ #define CustomerInfoImpl_CustomerInfoService_Wrapper_h
+ -->
+ <xsl:param name="class"/>
+ <xsl:text>#ifndef </xsl:text><xsl:value-of select="$class"/><xsl:text>_h</xsl:text>
+<!-- newline -->
+<xsl:text>
+</xsl:text>
+ <xsl:text>#define </xsl:text><xsl:value-of select="$class"/><xsl:text>_h</xsl:text>
+<!-- newline -->
+<xsl:text>
+
+</xsl:text>
+ <xsl:text>#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif </xsl:text>
+<!-- newline -->
+<xsl:text>
+
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="include_headers">
+ <!--For example,
+ #include "CustomerInfoImpl.h"
+ #include "tuscany/sca/cpp/CPPServiceWrapper.h"
+ -->
+ <xsl:param name="header"/>
+ <xsl:text>#include "</xsl:text><xsl:value-of select="translate($header,'\','/')"/><xsl:text>"</xsl:text>
+<!-- newline -->
+<xsl:text>
+</xsl:text>
+ <xsl:text>#include "tuscany/sca/cpp/CPPServiceWrapper.h"</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="scaService" mode="class_body">
+ <!--For example
+ class wrapperclassname : public tuscany::sca::cpp::CPPServiceWrapper
+ {
+ constructor
+ destructor
+ then apply operation templates for operations
+ };
+
+ E.g. Specifically
+
+ class CustomerInfoImpl_CustomerInfoService_Wrapper : public tuscany::sca::cpp::CPPServiceWrapper
+ {
+ public:
+ CustomerInfoImpl_CustomerInfoService_Wrapper(tuscany::sca::model::Component*);
+ virtual ~CustomerInfoImpl_CustomerInfoService_Wrapper();
+ virtual void invoke(tuscany::sca::Operation& operation);
+
+ private:
+ CustomerInfoImpl* impl;
+ };
+ -->
+ <!-- TODO second definition, remove? -->
+ <xsl:variable name="class">
+ <xsl:value-of select="concat(../@implClass, '_', ../@serviceName, '_Wrapper')"/>
+ </xsl:variable>
+<xsl:text>
+
+class </xsl:text>
+<xsl:value-of select="$class"/>
+<xsl:text> : public tuscany::sca::cpp::CPPServiceWrapper
+{
+public:
+ </xsl:text><xsl:value-of select="$class"/><xsl:text>(tuscany::sca::model::Service* target);</xsl:text>
+ <xsl:text>
+ virtual ~</xsl:text><xsl:value-of select="$class"/><xsl:text>();
+ virtual void invokeService(tuscany::sca::Operation&amp; operation);
+ virtual void* newImplementation();
+ virtual void deleteImplementation();
+</xsl:text>
+<xsl:text>private:
+ </xsl:text>
+ <xsl:value-of select="../@implNamespace"/><xsl:value-of select="../@implClass"/><xsl:text>* impl;
+};
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="ifndef_end">
+ <!--For example,
+ #endif // CustomerInfoImpl_CustomerInfoService_Wrapper_h
+ -->
+ <xsl:param name="class"/>
+ <xsl:text>
+#endif // </xsl:text><xsl:value-of select="$class"/><xsl:text>_h</xsl:text>
+ </xsl:template>
+
+<xsl:template match="scaOperation">
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-core.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-core.xsd
new file mode 100644
index 0000000000..d7661e3994
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-core.xsd
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="componentType" type="sca:ComponentType" />
+ <complexType name="ComponentType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="service" type="sca:ServiceType" />
+ <element minOccurs="0" maxOccurs="unbounded" name="reference" type="sca:ReferenceType" />
+ <element minOccurs="0" maxOccurs="unbounded" name="property" type="sca:PropertyType" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <element name="composite" type="sca:Composite" />
+ <complexType name="Composite">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="include" type="anyURI" />
+ <element minOccurs="0" maxOccurs="unbounded" name="service" type="sca:CompositeServiceType" />
+ <element minOccurs="0" maxOccurs="unbounded" name="property" type="sca:PropertyType" />
+ <element minOccurs="0" maxOccurs="unbounded" name="component" type="sca:Component" />
+ <element minOccurs="0" maxOccurs="unbounded" name="reference" type="sca:CompositeReferenceType" />
+ <element minOccurs="0" maxOccurs="unbounded" name="wire" type="sca:Wire" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <complexType name="CompositeServiceType">
+ <sequence>
+ <element ref="sca:interface" minOccurs="1" maxOccurs="1" />
+ <element ref="sca:binding" minOccurs="0" maxOccurs="unbounded" />
+ <element name="reference" minOccurs="0" maxOccurs="unbounded" type="anyURI" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+ <!-- a multiplicity 1..1 or 0..n sample
+ <reference>StockQuoteComponent</reference> - type must be URI
+ a multiplicity 1..n or 0..n sample
+ <reference>StockQuoteComponent1</reference> - type must be URI
+ <reference>StockQuoteComponent2</reference>
+ -->
+
+
+ <element name="interface" type="sca:Interface" abstract="true"/>
+ <complexType name="Interface" abstract="true"/>
+
+ <complexType name="CompositeReferenceType">
+ <sequence>
+ <element ref="sca:interface" minOccurs="1" maxOccurs="1" />
+ <element ref="sca:binding" minOccurs="0" maxOccurs="unbounded" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1" />
+ <attribute name="override" type="sca:OverrideOptions" default="may" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <complexType name="ServiceType">
+ <sequence>
+ <element ref="sca:interface" minOccurs="1" maxOccurs="1" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <complexType name="ReferenceType">
+ <sequence>
+ <element ref="sca:interface" minOccurs="1" maxOccurs="1" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1" />
+ <attribute name="override" type="sca:OverrideOptions" default="may" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <complexType name="PropertyType">
+ <complexContent>
+ <extension base="anyType">
+ <attribute name="name" type="NCName" use="required" />
+ <attribute name="type" type="QName" use="required" />
+ <attribute name="many" type="boolean" default="false" use="optional" />
+ <attribute name="override" type="sca:OverrideOptions" default="may" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="binding" type="sca:Binding" abstract="true" />
+ <complexType name="Binding" abstract="true">
+ <attribute name="uri" type="anyURI" use="optional" />
+ </complexType>
+
+ <complexType name="Component">
+ <sequence>
+ <element ref="sca:implementation" minOccurs="1" maxOccurs="1" />
+ <element name="reference" type="sca:Reference" minOccurs="0" maxOccurs="unbounded" />
+ <element name="property" type="sca:Property" minOccurs="0" maxOccurs="unbounded" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <complexType name="Property">
+ <complexContent>
+ <extension base="anyType">
+ <attribute name="name" type="NCName" use="required" />
+ <attribute name="source" type="string" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Reference">
+ <simpleContent>
+ <extension base="anyURI">
+ <attribute name="name" type="NCName" use="required" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </simpleContent>
+ </complexType>
+
+ <element name="implementation" type="sca:Implementation" abstract="true" />
+ <complexType name="Implementation" abstract="true"/>
+
+ <complexType name="Wire">
+ <sequence>
+ <element name="source" type="anyURI" minOccurs="1" maxOccurs="1" />
+ <element name="target" type="anyURI" minOccurs="1" maxOccurs="1" />
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+ <simpleType name="Multiplicity">
+ <restriction base="string">
+ <enumeration value="0..1" />
+ <enumeration value="1..1" />
+ <enumeration value="0..n" />
+ <enumeration value="1..n" />
+ </restriction>
+ </simpleType>
+
+ <simpleType name="OverrideOptions">
+ <restriction base="string">
+ <enumeration value="no" />
+ <enumeration value="may" />
+ <enumeration value="must" />
+ </restriction>
+ </simpleType>
+
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-composite.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-composite.xsd
new file mode 100644
index 0000000000..4bcc6747ba
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-composite.xsd
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="implementation.composite" type="sca:SCAImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="SCAImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="name" type="NCName" use="required" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-java.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-java.xsd
new file mode 100644
index 0000000000..e20f0a9b50
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-implementation-java.xsd
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="implementation.java" type="sca:JavaImplementation" substitutionGroup="sca:implementation"/>
+ <complexType name="JavaImplementation">
+ <complexContent>
+ <extension base="sca:Implementation">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="class" type="NCName" use="required" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-java.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-java.xsd
new file mode 100644
index 0000000000..a6028c1434
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-java.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="interface.java" type="sca:JavaInterface" substitutionGroup="sca:interface"/>
+ <complexType name="JavaInterface">
+ <complexContent>
+ <extension base="sca:Interface">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="interface" type="NCName" use="required" />
+ <attribute name="callbackInterface" type="NCName" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-wsdl.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-wsdl.xsd
new file mode 100644
index 0000000000..a3de838b7e
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca-interface-wsdl.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <element name="interface.wsdl" type="sca:WSDLPortType" substitutionGroup="sca:interface"/>
+ <complexType name="WSDLPortType">
+ <complexContent>
+ <extension base="sca:Interface">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="interface" type="anyURI" use="required" />
+ <attribute name="callbackInterface" type="anyURI" use="optional" />
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca.xsd
new file mode 100644
index 0000000000..8853f25c11
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/sca.xsd
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0">
+
+ <include schemaLocation="sca-core.xsd" />
+ <include schemaLocation="sca-interface-java.xsd" />
+ <include schemaLocation="sca-interface-wsdl.xsd" />
+ <include schemaLocation="sca-implementation-java.xsd" />
+ <include schemaLocation="sca-implementation-composite.xsd" />
+
+</schema>
diff --git a/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/tuscany.xsd b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/tuscany.xsd
new file mode 100644
index 0000000000..8bad940782
--- /dev/null
+++ b/tags/cpp-1.0-incubating-M2-RC2/sca/xsd/tuscany.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://org.apache.tuscany/xmlns/cpp/1.0"
+ xmlns:tuscany="http://org.apache.tuscany/xmlns/cpp/1.0"
+ elementFormDefault="qualified">
+
+ <element name="tuscany-model" type="tuscany:ModelType"/>
+ <complexType name="ModelType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="1" name="wsdl" type="tuscany:WSDLType"/>
+ <element minOccurs="0" maxOccurs="1" name="xsd" type="tuscany:XSDType"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="WSDLType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="file" type="tuscany:FileType"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="XSDType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="unbounded" name="file" type="tuscany:FileType"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="FileType">
+ <attribute name="name" type="NCName" use="required"/>
+ </complexType>
+
+</schema>