diff options
author | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
---|---|---|
committer | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
commit | bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a (patch) | |
tree | 38a92061c0793434c4be189f1d70c3458b6bc41d /tags/cpp-1.0-incubating-M2-RC1/sca |
Move Tuscany from Incubator to top level.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tags/cpp-1.0-incubating-M2-RC1/sca')
885 files changed, 79825 insertions, 0 deletions
diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/AUTHORS b/tags/cpp-1.0-incubating-M2-RC1/sca/AUTHORS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/AUTHORS diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/COPYING b/tags/cpp-1.0-incubating-M2-RC1/sca/COPYING new file mode 100755 index 0000000000..6b0b1270ff --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/ChangeLog b/tags/cpp-1.0-incubating-M2-RC1/sca/ChangeLog new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/ChangeLog diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/Developers Guide.txt b/tags/cpp-1.0-incubating-M2-RC1/sca/Developers Guide.txt new file mode 100644 index 0000000000..db7797b277 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/GettingStarted.html b/tags/cpp-1.0-incubating-M2-RC1/sca/GettingStarted.html new file mode 100644 index 0000000000..6d9afa39f5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/GettingStarted.html @@ -0,0 +1,355 @@ +<!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>Download Link</B></TD> + </TR> + <TR CLASS="b"> + <TD>Operating systems: + <UL> + + <LI>Windows XP SP2</LI> + <LI>Linux</LI> + </UL> + </TD> + <TD> + </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>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 + </TD> + </TR> + <TR CLASS="b"> + <TD>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 + </TD> + </TR> + <TR CLASS="a"> + <TD><STRONG>Optional:</STRONG> Python version 2.3 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 <tuscany_sca_install_dir>/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 <tuscany_sca_install_dir></LI> + <LI>The following environment variables are required: + <UL> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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=<path to Python libraries></LI> + <LI>PYTHON_INCLUDE=<path to Python includes></LI> + <LI>PYTHON_VERSION=<name of the Python version><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=<path to Ruby libraries></LI> + <LI>RUBY_INCLUDE=<path to Ruby includes><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=<tuscany_sca_install_dir>/deploy</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> + <LI>Set the TUSCANY_SCACPP environment variable to point to the <tuscany_sca_install_dir>/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 <tuscany_sca_install_dir>\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=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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=<path to installed Python> + <LI>RUBY_HOME=<path to installed Ruby></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 <to where you unzipped the source></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 <tuscany_sca_install_dir>/projects/tuscany_sca/tuscany_sca.dsw + in Visual Studio 6 or at at <tuscany_sca_install_dir>/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> + </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 <A HREF="http://issues.apache.org/jira/browse/Tuscany" + TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P> + + + <P> </P> + + <P> </P> + + <P> </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-RC1/sca/INSTALL b/tags/cpp-1.0-incubating-M2-RC1/sca/INSTALL new file mode 100644 index 0000000000..9e0a0b758a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/LICENSE b/tags/cpp-1.0-incubating-M2-RC1/sca/LICENSE new file mode 100755 index 0000000000..f433b1a53f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/Makefile.am new file mode 100644 index 0000000000..57296591ed --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/Makefile.am @@ -0,0 +1,36 @@ +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-RC1/sca/NEWS b/tags/cpp-1.0-incubating-M2-RC1/sca/NEWS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/NEWS diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/NOTICE b/tags/cpp-1.0-incubating-M2-RC1/sca/NOTICE new file mode 100644 index 0000000000..bfb81409ad --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/README b/tags/cpp-1.0-incubating-M2-RC1/sca/README new file mode 100644 index 0000000000..f61ed9af27 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/autogen.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/autogen.sh new file mode 100755 index 0000000000..af38864985 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/build.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/build.bat new file mode 100644 index 0000000000..750d234152 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/build.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/build.sh new file mode 100755 index 0000000000..1be3833384 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/configure.ac b/tags/cpp-1.0-incubating-M2-RC1/sca/configure.ac new file mode 100644 index 0000000000..ebe72c64e3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/configure.ac @@ -0,0 +1,195 @@ +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-RC1/sca/doc/Axis2CWSService.html b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/Axis2CWSService.html new file mode 100644 index 0000000000..7b32633b6a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/Axis2CWSService.html @@ -0,0 +1,364 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 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=<path to axis2c version 0.94></LI> + </UL></LI> + <LI>Use the following command sequence to run the deploy script: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL></LI> + <LI>Use the following command sequence to run the deploy script: + <UL> + <LI>cd <tuscany_sca_install_dir>/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>Create a <axis2c version 0.94>/services/tuscany directory + </LI> + <LI>Copy all the files in <tuscany_sca_install_dir>/extensions/ws/service/services/tuscany/ + to the directory created above + </LI> + <LI>Create a <axis2c version 0.94>/modules/tuscany directory + </LI> + <LI>Copy all the files in <tuscany_sca_install_dir>/extensions/ws/service/modules/tuscany/ + to the directory created above + </LI> + <LI>Edit the <axis2c version 0.94>/axis2.xml file to add a <ref module="tuscany"> + element. This will register the above module. E.g.: + <PRE>... + <!-- ================================================= --> + <!-- Global Modules --> + <!-- ================================================= --> + <!-- Comment this to disable Addressing --> + <module ref="addressing"/> + + <module ref="tuscany"/> + +... </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 + <tuscany_sca_install_dir>samples/Calculator. + </P> + <P>Pre-requisites: + <UL> + <LI>A working component within a composite and solution composite, + with SCAGEN generated Proxy and Wrapper classes and a .dll or + .so library compiled from these and the component class files. + The *.composite and *.componentType files must also be available + and working + </LI> + </UL> + </P> + <OL> + <LI>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 needs to be accessible from the component, + so place it in the same directory as the component or in a subdirectory. + <BR/> + See the <tuscany_sca_install_dir>/samples/Calculator/sample.calculator/Calculator.wsdl + file as an example. + </LI> + <LI>Add a service definition to the component .composite file, setting the + interface.wsdl interface attribute to the namespace, port name specified in the + WSDL, in the form: "<namespace>#wsdl.interface(<port-name>)". + 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><service name="CalculatorService"> + <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/> + <binding.ws/> + <reference>CalculatorComponent/CalculatorService</reference> +</service></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 + component from another Tuscany runtime 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>Operation parameter and return messages that are defined in the WSDL must be + XML Schema elements containing a complexType - there is currently no + support for simpleTypes or single-level elements. Also, Document/literal + Wrapped services require that the operation name is used as the name of the + incoming element that wraps the operation parameters. + </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><wsdl:message name="myOperationRequestMsg"> + <wsdl:part element="tns:myOperation" name="myOperationRequestPart"/> +</wsdl:message> +<wsdl:message name="myOperationResponseMsg"> + <wsdl:part element="tns:myOperationResponse" name="myOperationResponsePart"/> +</wsdl:message></PRE> + and will need an XML schema to define the types like: + <PRE><xsd:element name="myOperation"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="arg1" type="xsd:string" minOccurs="1"/> + <xsd:element name="arg2" type="xsd:short" minOccurs="1"/> + <xsd:element name="arg3" minOccurs="1"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="dataObjectFloatData" type="xsd:float"/> + <xsd:element name="dataObjectStringData" type="xsd:string"/> + <xsd:element name="dataObjectIntData" type="xsd:int"/> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + </xsd:complexType> +</xsd:element> + +<xsd:element name="myOperationResponse"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="result" type="xsd:int" minOccurs="1"/> + </xsd:sequence> + </xsd:complexType> +</xsd:element></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 <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-RC1/sca/doc/CPPComponents.html b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/CPPComponents.html new file mode 100644 index 0000000000..a21036a377 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/CPPComponents.html @@ -0,0 +1,321 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 component definition in a composite file + </LI> + <LI>A service definition in a .componentType file + </LI> + <LI>A composite describing the configuration of the composite definition above + </LI> + </UL> + <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><componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"> + + <service name="CalculatorService"> + <interface.cpp header="Calculator.h"/> + </service> + +</componentType></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><composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + name="sample.calculator"> + + <component name="CalculatorComponent"> + <implementation.cpp library="Calculator" header="CalculatorImpl.h"/> + </component> + +</composite></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 your composite + component within it. The composite component definition should specify the service + name used in the componentType file and 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><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></PRE> + </LI> + <LI>Deploy the various files into the SCA directory structure, as follows: + <UL> + <LI><deploy_root>/CompositeName/ServiceHeader.h</LI> + <LI><deploy_root>/CompositeName/ImplementationHeader.h </LI> + <LI><deploy_root>/CompositeName/CompositeName.composite </LI> + <LI><deploy_root>/CompositeName/Implementation.componentType </LI> + <LI><deploy_root>/CompositeName/Implementation.dll (or .so on Linux) </LI> + <LI><deploy_root>/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 << "calculator_client: Unable to find Calculator service" << endl; + } + else + { + float result = calcService->add(arg1, arg2); + cout << "calculator_client add(" << arg1 << "," << arg2 << ") = " << result << endl; + } +} +catch (ServiceRuntimeException& ex) +{ + cout << "calculator_client: Error whilst invoking Tuscany: " << + ex.getMessageText() << 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. + 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 <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-RC1/sca/doc/PythonExtension.html b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/PythonExtension.html new file mode 100644 index 0000000000..696e41da8e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/PythonExtension.html @@ -0,0 +1,288 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 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 <tuscany_sca_install_dir>/lib directory to the LD_LIBRARY_PATH <!--(Linux) or DYLD_LIBRARY_PATH (MacOS X)--> environment variable</LI> + <LI>Add the <tuscany_sca_install_dir>/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=<path to built Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>PYTHON_LIB=<path to Python libraries></LI> + <LI>PYTHON_INCLUDE=<path to Python includes></LI> + <LI>PYTHON_VERSION=<name of the Python version><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 <tuscany_sca_install_dir></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 <tuscany_sca_install_dir>\bin directory to the PATH environment variable</LI> + <LI>Add the <tuscany_sca_install_dir>\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=<path to built Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>PYTHON_HOME=<path to installed Python> + </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 <to where you unzipped the source></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 <tuscany_sca_install_dir>/projects/tuscany_sca/tuscany_sca.dsw + in Visual Studio 6 or at at <tuscany_sca_install_dir>/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 <tuscany_sca_install_dir>/extensions/python/bin + directory on Windows and <tuscany_sca_install_dir>/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><implementation.python module="PythonModuleName" path="path/to/module"/> +</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><implementation.python module="PythonModuleName" path="relative/path/to/module" class="PythonClassName"/> +</PRE> + <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><componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <service name="CalculatorService"> + <interface.python/> + </service> + <reference name="divideService"> + <interface.python/> + </reference> +</componentType> +</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><component name="CalculatorComponent"> + <implementation.python module="CalculatorImpl"/> + <reference name="divideService">DivideComponent/DivideService</reference> +</component> +</PRE> + <A NAME="properties"><H3>Properties</H3></A> + <P>A composite with a property defined for a component like so: + </P> +<PRE><component name="DivideComponent"> + <implementation.python module="DivideImpl"/> + <property name="doRounding">true</property> +</component> +</PRE> + <P>and in the associated .componentType file like so: + </P> +<PRE><componentType ... +... + <property name="doRounding" type="xsd:boolean"/> +</componentType> +</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 <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-RC1/sca/doc/RubyExtension.html b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/RubyExtension.html new file mode 100644 index 0000000000..2ab8601ec5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/RubyExtension.html @@ -0,0 +1,279 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 <tuscany_sca_install_dir>/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=<path to built Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>RUBY_LIB=<path to Ruby libraries></LI> + <LI>RUBY_INCLUDE=<path to Ruby includes><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 <tuscany_sca_install_dir></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 <tuscany_sca_install_dir>\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=<path to built Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>RUBY_HOME=<path to installed Ruby> + </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 <to where you unzipped the source></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 <tuscany_sca_install_dir>/projects/tuscany_sca/tuscany_sca.dsw + in Visual Studio 6 or at at <tuscany_sca_install_dir>/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 <tuscany_sca_install_dir>/extensions/ruby/bin + directory on Windows and <tuscany_sca_install_dir>/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><implementation.ruby script="CalculatorImpl.rb"/> +</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><implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/> +</PRE> + <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><component name="CalculatorComponent"> + <implementation.ruby script="CalculatorImpl.rb"/> + <reference name="divideService">DivideComponent/DivideService</reference> +</component> +</PRE> + <A NAME="properties"><H3>Properties</H3></A> + <P>A composite with a property defined for a component like so: + </P> +<PRE><component name="DivideComponent"> + <implementation.ruby script="DivideImpl.rb" class="DivideImpl"/> + <property name="round">true</property> +</component> +</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 <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-RC1/sca/doc/css/maven-base.css b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/css/maven-base.css new file mode 100644 index 0000000000..314da3a272 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/css/maven-base.css @@ -0,0 +1,147 @@ +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-RC1/sca/doc/css/maven-theme.css b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/css/maven-theme.css new file mode 100644 index 0000000000..c77cb695dd --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/doc/css/maven-theme.css @@ -0,0 +1,145 @@ +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-RC1/sca/makebindist.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/makebindist.sh new file mode 100755 index 0000000000..8daee57fc8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/makedist.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/makedist.sh new file mode 100755 index 0000000000..504ebff6b1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projects/tuscany_sca/Build/Build Instructions.txt b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/Build/Build Instructions.txt new file mode 100644 index 0000000000..44df975db5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projects/tuscany_sca/Build/Build.dsp b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/Build/Build.dsp new file mode 100644 index 0000000000..51bcf1fd0d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projects/tuscany_sca/Build/Build.mak b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/Build/Build.mak new file mode 100644 index 0000000000..80499ebc51 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projects/tuscany_sca/build.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/build.cmd new file mode 100644 index 0000000000..561a03aea7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca.dsw b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca.dsw new file mode 100644 index 0000000000..2d7d7f29ff --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca.ncb b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca.ncb Binary files differnew file mode 100644 index 0000000000..37c7336f39 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca.ncb diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca.opt b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca.opt Binary files differnew file mode 100644 index 0000000000..d89ab2f57c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca.opt diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca/tuscany_sca.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_python/tuscany_sca_python.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projects/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca.sln b/tags/cpp-1.0-incubating-M2-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca.sln new file mode 100644 index 0000000000..6121273475 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca/Build Instructions.txt b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca/tuscany_sca.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca_cpp/tuscany_sca_cpp.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca_python/tuscany_sca_python.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca_ruby/tuscany_sca_ruby.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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;"$(TUSCANY_SDOCPP)/include";"$(RUBY_HOME)/lib/ruby/1.8/i386-mswin32""
+ 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;"$(TUSCANY_SDOCPP)/include";"$(RUBY_HOME)/lib/ruby/1.8/i386-mswin32""
+ 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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_dispatcher/tuscany_sca_ws_dispatcher.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_reference/tuscany_sca_ws_reference.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/projectsvc7/tuscany_sca/tuscany_sca_ws_service/tuscany_sca_ws_service.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/Makefile.am new file mode 100644 index 0000000000..9eebb44c40 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = core extensions diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/Makefile.am new file mode 100644 index 0000000000..af437a64d6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/deploy.bat new file mode 100644 index 0000000000..178ffb7b39 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/core/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/src/Makefile.am new file mode 100644 index 0000000000..00a26b8683 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/src/Makefile.am @@ -0,0 +1,57 @@ +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-RC1/sca/runtime/core/src/tuscany/sca/core/Operation.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/Operation.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/SCARuntime.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/SCARuntime.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/ServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/ServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/core/TuscanyRuntime.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/export.h b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/src/tuscany/sca/export.h new file mode 100644 index 0000000000..79b02fe4cf --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/ImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/InterfaceExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/ReferenceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/extension/ServiceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Binding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Binding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Component.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Component.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ComponentType.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ComponentType.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Composite.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Composite.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/CompositeReference.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/CompositeReference.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/CompositeService.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/CompositeService.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Contract.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Contract.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Interface.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Interface.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ModelLoader.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ModelLoader.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Reference.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Reference.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ReferenceType.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ReferenceType.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Service.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Service.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ServiceType.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/ServiceType.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/WSDLDefinition.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/WSDLInterface.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/WSDLOperation.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Wire.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/model/Wire.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/DefaultLogWriter.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Exceptions.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Exceptions.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/File.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/File.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/FileLogWriter.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Library.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Library.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/LogWriter.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/LogWriter.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Logger.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Logger.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Logging.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Utils.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/src/tuscany/sca/util/Utils.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/core/test/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/test/Makefile.am new file mode 100644 index 0000000000..1d38fb8abb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/core/test/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = + diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/Makefile.am new file mode 100644 index 0000000000..e0e5104032 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/Makefile.am @@ -0,0 +1,27 @@ +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-RC1/sca/runtime/extensions/cpp/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/cpp/Makefile.am new file mode 100644 index 0000000000..1c3113603b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/cpp/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/runtime/extensions/cpp/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/cpp/deploy.bat new file mode 100644 index 0000000000..e87f3b4dd6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/cpp/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/cpp/src/Makefile.am new file mode 100644 index 0000000000..3891e14051 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/cpp/src/Makefile.am @@ -0,0 +1,31 @@ +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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/ComponentContext.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/CompositeContext.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/ServiceRuntimeException.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/export.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/osoa/sca/sca.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPInterfaceExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CPPServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/ComponentContextImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/CompositeContextImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPImplementation.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPInterface.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/src/tuscany/sca/cpp/model/CPPServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/xsd/sca-implementation-cpp.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/cpp/xsd/sca-interface-cpp.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/php/Makefile.am new file mode 100644 index 0000000000..30e7006028 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/php/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/runtime/extensions/php/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/php/src/Makefile.am new file mode 100644 index 0000000000..7be9269831 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/php/src/Makefile.am @@ -0,0 +1,28 @@ +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-RC1/sca/runtime/extensions/php/src/osoa/sca/ServiceRuntimeException.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/osoa/sca/export.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/PHPExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/PHPImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/PHPServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPImplementation.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/src/tuscany/sca/php/model/PHPServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/php/xsd/sca-implementation-php.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/python/Makefile.am new file mode 100644 index 0000000000..c3acfab447 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/python/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/runtime/extensions/python/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/python/deploy.bat new file mode 100644 index 0000000000..db007e892c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/python/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/python/src/Makefile.am new file mode 100644 index 0000000000..a7c62400c1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/python/src/Makefile.am @@ -0,0 +1,41 @@ +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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonInterfaceExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceRuntimeException.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/PythonServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/export.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonImplementation.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonInterface.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/model/PythonServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/sca_module.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/sca_proxy.py b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/src/tuscany/sca/python/sca_setup.py b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/xsd/sca-implementation-python.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/python/xsd/sca-interface-python.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ruby/Makefile.am new file mode 100644 index 0000000000..6605dacf9a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ruby/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/runtime/extensions/ruby/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ruby/deploy.bat new file mode 100644 index 0000000000..176ac4640d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/ruby/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ruby/src/Makefile.am new file mode 100644 index 0000000000..066f3aa284 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ruby/src/Makefile.am @@ -0,0 +1,31 @@ +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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/Ruby.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyCompositeContext.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyImplementationExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/RubyServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/export.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyImplementation.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/src/tuscany/sca/ruby/model/RubyServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ruby/xsd/sca-implementation-ruby.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/Makefile.am new file mode 100644 index 0000000000..9e104f739f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/Makefile.am @@ -0,0 +1,6 @@ +SUBDIRS = reference service +datadir=$(prefix)/extensions/sca + +nobase_data_DATA = xsd/*.xsd + +EXTRA_DIST = xsd diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/Makefile.am new file mode 100644 index 0000000000..f3ba006041 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = axis2c diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/axis2c/Makefile.am new file mode 100644 index 0000000000..af437a64d6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/axis2c/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am new file mode 100644 index 0000000000..ea296e2ca8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/reference/axis2c/src/Makefile.am @@ -0,0 +1,21 @@ +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-RC1/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/SCAServiceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/reference/axis2c/src/tuscany/sca/binding/model/SCAServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/service/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/Makefile.am new file mode 100644 index 0000000000..f3ba006041 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = axis2c diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/axis2c/Makefile.am new file mode 100644 index 0000000000..f963effea2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/axis2c/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src
\ No newline at end of file diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am new file mode 100644 index 0000000000..4339ff624e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/sca/service/axis2c/src/Makefile.am @@ -0,0 +1,21 @@ +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-RC1/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/SCAReferenceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/service/axis2c/src/tuscany/sca/binding/model/SCAReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/sca/xsd/sca-binding-sca.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/Makefile.am new file mode 100644 index 0000000000..ca91c69428 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/Makefile.am @@ -0,0 +1,6 @@ +SUBDIRS = reference service +datadir=$(prefix)/extensions/ws + +nobase_data_DATA = xsd/*.xsd + +EXTRA_DIST = xsd diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/deploy.bat new file mode 100644 index 0000000000..567875624f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/ws/reference/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/Makefile.am new file mode 100644 index 0000000000..f3ba006041 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = axis2c diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/Makefile.am new file mode 100644 index 0000000000..af437a64d6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am new file mode 100644 index 0000000000..e5a9433333 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/src/Makefile.am @@ -0,0 +1,32 @@ +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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp new file mode 100644 index 0000000000..8174e23f3d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.cpp @@ -0,0 +1,704 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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 "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 output wrapper + const Type& inputType = dataFactory->getType(wsdlOperation.getInputTypeUri().c_str(), + wsdlOperation.getInputTypeName().c_str()); + inputDataObject = dataFactory->create(inputType); + } + catch (SDORuntimeException e) + { + // 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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/Axis2Client.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/WSServiceWrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/axis2c/src/tuscany/sca/ws/model/WSServiceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/reference/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/reference/deploy.bat new file mode 100644 index 0000000000..2bba10425c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/ws/service/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/Makefile.am new file mode 100644 index 0000000000..f3ba006041 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = axis2c diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/Makefile.am new file mode 100644 index 0000000000..f963effea2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src
\ No newline at end of file diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am new file mode 100644 index 0000000000..30b0635f6b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/src/Makefile.am @@ -0,0 +1,71 @@ +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${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 + +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-RC1/sca/runtime/extensions/ws/service/axis2c/src/axis2.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/deploy.sh b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/module.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/services.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Dispatcher.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2DispatcherModule.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Service.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.cpp new file mode 100644 index 0000000000..c2ed487d3f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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(0,"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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/Axis2Utils.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSReferenceBindingExtension.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp new file mode 100644 index 0000000000..8aca358793 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.cpp @@ -0,0 +1,578 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT 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]); + //printf("inputDataObject has FloatType named %s with value %f\n", name, *floatData); + 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 + */ + + printf("inputDataObject has OpenDataObjectType named %s\n", name); + 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& 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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/WSServiceProxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/axis2c/src/tuscany/sca/ws/model/WSReferenceBinding.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/runtime/extensions/ws/service/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/deploy.bat new file mode 100644 index 0000000000..0722342b03 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/ws/service/deploymodule.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/runtime/extensions/ws/service/deploymodule.bat new file mode 100644 index 0000000000..246728b6b2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/runtime/extensions/ws/xsd/sca-binding-webservice.xsd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/AUTHORS b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/AUTHORS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/AUTHORS diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/Makefile.am new file mode 100644 index 0000000000..238a783674 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/Makefile.am @@ -0,0 +1,4 @@ +deploydir=$(prefix)/samples/BigBank/deploy +SUBDIRS = bigbank.account bigbank.client bigbank.wsclient +EXTRA_DIST = *.composite README.html +deploy_DATA = *.composite diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/README new file mode 100644 index 0000000000..dc919e1aed --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/README.html b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/README.html new file mode 100644 index 0000000000..26cc1f303d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/README.html @@ -0,0 +1,424 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL></LI> + </LI> + <LI>Build the C++ samples with the following command sequence: + <UL> + <LI>cd <tuscany_sca_install_dir>/samples</LI> + <LI>./configure --prefix=$TUSCANY_SCACPP</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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.92></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 I 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 <tuscany_sca_install_dir>/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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 + <tuscany_sca_install_dir>\samples\ides or via the command-line build file + found at <tuscany_sca_install_dir>\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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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>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) + <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>When I ask PHP to list what modules are active in my version of PHP I get 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 I 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 <tuscany_sca_install_dir>/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 <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-RC1/sca/samples/BigBank/bigbank.account/AccountDataService.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountDataService.h new file mode 100644 index 0000000000..04000698e7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.componentType new file mode 100644 index 0000000000..b1cab9e1f9 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.cpp new file mode 100644 index 0000000000..3f06809919 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountDataServiceImpl.h new file mode 100644 index 0000000000..373da4ba95 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountService.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountService.h new file mode 100644 index 0000000000..b8e462fb72 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountService.wsdl new file mode 100644 index 0000000000..cbfe180692 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountServiceImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountServiceImpl.componentType new file mode 100644 index 0000000000..b65fa1dc18 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountServiceImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountServiceImpl.cpp new file mode 100644 index 0000000000..fd18119bad --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/AccountServiceImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/AccountServiceImpl.h new file mode 100644 index 0000000000..70dfc17b19 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/Makefile.am new file mode 100644 index 0000000000..a8fc73e3c0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/Makefile.am @@ -0,0 +1,42 @@ +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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteService.h new file mode 100644 index 0000000000..d67998059a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.componentType new file mode 100644 index 0000000000..6ac2b77255 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.cpp new file mode 100644 index 0000000000..e78769f50e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteServiceImpl.h new file mode 100644 index 0000000000..cccf161454 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteTypes.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteTypes.xsd new file mode 100644 index 0000000000..5bce3a63dc --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteWebService.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteWebService.h new file mode 100644 index 0000000000..9bee445c8d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/StockQuoteWebService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/StockQuoteWebService.wsdl new file mode 100644 index 0000000000..c14f97c87b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/bigbank.account.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/bigbank.account.composite new file mode 100644 index 0000000000..7173d584d2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/runwsserver.bat new file mode 100644 index 0000000000..f95d5136ef --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.account/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.account/runwsserver.sh new file mode 100755 index 0000000000..eb20a3d670 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.accountmanagement.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.accountmanagement.composite new file mode 100644 index 0000000000..4bf2c35008 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.client/AccountClient.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.client/AccountClient.cpp new file mode 100644 index 0000000000..a0b9de5f76 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.client/Makefile.am new file mode 100644 index 0000000000..eb14b48580 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.client/Makefile.am @@ -0,0 +1,32 @@ +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-RC1/sca/samples/BigBank/bigbank.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.client/runclient.bat new file mode 100644 index 0000000000..e8907e9302 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.client/runclient.sh new file mode 100755 index 0000000000..54f3c27578 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.phpwsclient/AccountService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.phpwsclient/AccountService.wsdl new file mode 100644 index 0000000000..cbfe180692 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.phpwsclient/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.phpwsclient/README new file mode 100644 index 0000000000..d02873e860 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.phpwsclient/bigaccount.php b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.phpwsclient/bigaccount.php new file mode 100644 index 0000000000..b9f77d3297 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.phpwsclient/bigwelcome.php b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.phpwsclient/bigwelcome.php new file mode 100644 index 0000000000..32159ddc16 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.wsclient/AccountWSClient.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.wsclient/AccountWSClient.cpp new file mode 100644 index 0000000000..b31959170f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.wsclient/Makefile.am new file mode 100644 index 0000000000..f904b44182 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.wsclient/Makefile.am @@ -0,0 +1,27 @@ +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-RC1/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/BigBank/bigbank.wsclient/axis2_Account_stub.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/BigBank/bigbank.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.wsclient/runwsclient.bat new file mode 100644 index 0000000000..aa3f7d6dad --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/bigbank.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/bigbank.wsclient/runwsclient.sh new file mode 100755 index 0000000000..fa7d7d6813 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/deploy.bat new file mode 100644 index 0000000000..2f1bdf1423 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/deployclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/deployclient.bat new file mode 100644 index 0000000000..1f47e5ab13 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/BigBank/deploywsclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/BigBank/deploywsclient.bat new file mode 100644 index 0000000000..3e2ce687fe --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/COPYING b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/COPYING new file mode 100755 index 0000000000..6b0b1270ff --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/Makefile.am new file mode 100644 index 0000000000..855bf1e44f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/Makefile.am @@ -0,0 +1,4 @@ +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-RC1/sca/samples/Calculator/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/README new file mode 100644 index 0000000000..4104ff46b6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/README.html b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/README.html new file mode 100644 index 0000000000..c60d7b36f1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/README.html @@ -0,0 +1,250 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL></LI> + </LI> + <LI>Build the C++ samples with the following command sequence: + <UL> + <LI>cd <tuscany_sca_install_dir>/samples</LI> + <LI>./configure --prefix=$TUSCANY_SCACPP</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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.92></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 + <tuscany_sca_install_dir>\samples\ides or via the command-line build file + found at <tuscany_sca_install_dir>\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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 <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-RC1/sca/samples/Calculator/deploy.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/deploy.bat new file mode 100644 index 0000000000..efd18e8219 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/deployclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/deployclient.bat new file mode 100644 index 0000000000..bf4fd47d43 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/deploywsclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/deploywsclient.bat new file mode 100644 index 0000000000..8b1b1a53c5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.client/CalculatorClient.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.client/CalculatorClient.cpp new file mode 100644 index 0000000000..9ec8b04bd1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.client/Makefile.am new file mode 100644 index 0000000000..433b249062 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.client/Makefile.am @@ -0,0 +1,38 @@ +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-RC1/sca/samples/Calculator/sample.calculator.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.client/runclient.bat new file mode 100644 index 0000000000..f4308ff739 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.client/runclient.sh new file mode 100755 index 0000000000..ec4b3bb643 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.solution.composite new file mode 100644 index 0000000000..0445d645e4 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.wsclient/CalculatorWSClient.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.wsclient/CalculatorWSClient.cpp new file mode 100644 index 0000000000..267baf1722 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am new file mode 100644 index 0000000000..dca4c832bb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.wsclient/Makefile.am @@ -0,0 +1,31 @@ +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-RC1/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/Calculator/sample.calculator.wsclient/axis2_Calculator_stub.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.bat new file mode 100644 index 0000000000..6d50f23370 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator.wsclient/runwsclient.sh new file mode 100755 index 0000000000..51d8dbac22 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/Calculator.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/Calculator.h new file mode 100644 index 0000000000..1a88c9cb67 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/Calculator.wsdl new file mode 100644 index 0000000000..37529c06c5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/CalculatorImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/CalculatorImpl.componentType new file mode 100644 index 0000000000..72fe9842e8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/CalculatorImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/CalculatorImpl.cpp new file mode 100644 index 0000000000..73abf2f1df --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/CalculatorImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/CalculatorImpl.h new file mode 100644 index 0000000000..af8a5eeab1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/Divide.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/Divide.h new file mode 100644 index 0000000000..6e171ed733 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/DivideImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/DivideImpl.componentType new file mode 100644 index 0000000000..d7369e3ff0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/DivideImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/DivideImpl.cpp new file mode 100644 index 0000000000..8b9db46ecb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/DivideImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/DivideImpl.h new file mode 100644 index 0000000000..64045f1899 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/Makefile.am new file mode 100644 index 0000000000..bbd99286ac --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/Makefile.am @@ -0,0 +1,38 @@ +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-RC1/sca/samples/Calculator/sample.calculator/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/runwsserver.bat new file mode 100644 index 0000000000..160152e6a9 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/runwsserver.sh new file mode 100755 index 0000000000..b94d841d66 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Calculator/sample.calculator/sample.calculator.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Calculator/sample.calculator/sample.calculator.composite new file mode 100644 index 0000000000..ae4657b366 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ChangeLog b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ChangeLog new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ChangeLog diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/GettingStarted.html b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/GettingStarted.html new file mode 100644 index 0000000000..85cdc6b701 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/GettingStarted.html @@ -0,0 +1,114 @@ +<!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 <A HREF="http://issues.apache.org/jira/browse/Tuscany" + TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P> + + + <P> </P> + + <P> </P> + + <P> </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-RC1/sca/samples/INSTALL b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/INSTALL new file mode 100644 index 0000000000..2a6a072bf5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/INSTALL @@ -0,0 +1,2 @@ +Please read the GettingStarted.html document for information on +building and installing the Tuscany SCA for C++ samples diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/LICENSE b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/LICENSE new file mode 100755 index 0000000000..f433b1a53f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Makefile.am new file mode 100644 index 0000000000..df96ecb8b4 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/Makefile.am @@ -0,0 +1,19 @@ +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-RC1/sca/samples/MyValue/Client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/Client/Makefile.am new file mode 100644 index 0000000000..b1586cc752 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/Client/Makefile.am @@ -0,0 +1,11 @@ +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-RC1/sca/samples/MyValue/Client/MyValueClient.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/Client/MyValueClient.cpp new file mode 100755 index 0000000000..0919c539da --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/Makefile.am new file mode 100644 index 0000000000..ede24623cf --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/Makefile.am @@ -0,0 +1,22 @@ +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-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo.fragment new file mode 100755 index 0000000000..2227f730dd --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfo.h new file mode 100755 index 0000000000..61d3e18133 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.componentType new file mode 100755 index 0000000000..caed4c5327 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.cpp new file mode 100755 index 0000000000..1a50dd4426 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/CustomerInfoImpl.h new file mode 100755 index 0000000000..e2721ea03d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am new file mode 100644 index 0000000000..78161c429c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/CustomerInfo/Makefile.am @@ -0,0 +1,15 @@ +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-RC1/sca/samples/MyValue/MyValueComposite/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/Makefile.am new file mode 100644 index 0000000000..1dc2c169b7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/Makefile.am @@ -0,0 +1,10 @@ +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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am new file mode 100644 index 0000000000..85e1077998 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/Makefile.am @@ -0,0 +1,17 @@ +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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValue.h new file mode 100755 index 0000000000..615f62bde5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.componentType new file mode 100755 index 0000000000..b03760247b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.cpp new file mode 100755 index 0000000000..5c0d5506d3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueImpl.h new file mode 100755 index 0000000000..6380dac5e0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.wsdl new file mode 100755 index 0000000000..6ea196e311 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/MyValue/MyValueService.xsd new file mode 100755 index 0000000000..ab2f25a826 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.h new file mode 100755 index 0000000000..fda8a80e89 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/StockQuoteService/StockQuoteService.wsdl new file mode 100755 index 0000000000..159d15c2d8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueComposite/sca.composite new file mode 100755 index 0000000000..52461c7650 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/MyValueSubsystem/sca.subsystem b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/MyValueSubsystem/sca.subsystem new file mode 100755 index 0000000000..7336b818b7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/runMyValueClient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/runMyValueClient.sh new file mode 100755 index 0000000000..6a8a60c490 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/MyValue/server.wsdd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/MyValue/server.wsdd new file mode 100755 index 0000000000..1a82ab85a7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/NEWS b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/NEWS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/NEWS diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/NOTICE b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/NOTICE new file mode 100644 index 0000000000..bfb81409ad --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/Makefile.am new file mode 100644 index 0000000000..49dea6f6eb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/Makefile.am @@ -0,0 +1,4 @@ +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-RC1/sca/samples/PythonCalculator/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/README new file mode 100644 index 0000000000..b9e787c768 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/README.html b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/README.html new file mode 100644 index 0000000000..72b79dac56 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/README.html @@ -0,0 +1,252 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 <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-RC1/sca/samples/PythonCalculator/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/deploy.cmd new file mode 100644 index 0000000000..7db890865a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am new file mode 100644 index 0000000000..e3789b1cfe --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.client/Makefile.am @@ -0,0 +1,6 @@ +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-RC1/sca/samples/PythonCalculator/sample.calculator.client/calculator_client.py b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.client/runclient.bat new file mode 100644 index 0000000000..d02d5fced8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.client/runclient.sh new file mode 100755 index 0000000000..ced35b5f6b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.solution.composite new file mode 100644 index 0000000000..0a8ae343db --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/Calculator.wsdl new file mode 100644 index 0000000000..f74c3d5c33 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am new file mode 100644 index 0000000000..b2c7c4d718 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/Makefile.am @@ -0,0 +1,6 @@ +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-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/calculator_wsclient.py b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.bat new file mode 100644 index 0000000000..dbcdf06313 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/runwsclient.sh new file mode 100755 index 0000000000..a02f607d08 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/Calculator.wsdl new file mode 100644 index 0000000000..37529c06c5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.componentType new file mode 100644 index 0000000000..b54b4e22b1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.py b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/CalculatorImpl.py new file mode 100644 index 0000000000..86dbef9e4d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/DivideImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/DivideImpl.componentType new file mode 100644 index 0000000000..fa2938279a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/DivideImpl.py b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/DivideImpl.py new file mode 100644 index 0000000000..3921731de6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/Makefile.am new file mode 100644 index 0000000000..f8aaaac0c9 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/samples/PythonCalculator/sample.calculator/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/runwsserver.bat new file mode 100644 index 0000000000..2e5df325b2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/runwsserver.sh new file mode 100755 index 0000000000..570a439b4f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/PythonCalculator/sample.calculator/sample.calculator.composite new file mode 100644 index 0000000000..caac112edf --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/README new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/README diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/Makefile.am new file mode 100644 index 0000000000..6a5f96c750 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/Makefile.am @@ -0,0 +1,4 @@ +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-RC1/sca/samples/RubyBank/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/README new file mode 100644 index 0000000000..266b66cc9a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/README.html b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/README.html new file mode 100644 index 0000000000..0d59d27c23 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/README.html @@ -0,0 +1,235 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.92></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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-RC1/sca/samples/RubyBank/bigbank.account/AccountDataServiceImpl.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/AccountDataServiceImpl.rb new file mode 100644 index 0000000000..8ae0e23bab --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/AccountService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/AccountService.wsdl new file mode 100644 index 0000000000..cbfe180692 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/AccountServiceImpl.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/AccountServiceImpl.rb new file mode 100644 index 0000000000..a82b226a76 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/Makefile.am new file mode 100644 index 0000000000..66344fc2bf --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/samples/RubyBank/bigbank.account/StockQuoteServiceImpl.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/StockQuoteServiceImpl.rb new file mode 100644 index 0000000000..c8bbe248a3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/StockQuoteTypes.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/StockQuoteTypes.xsd new file mode 100644 index 0000000000..2f7012b5fb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/StockQuoteWebService.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/StockQuoteWebService.wsdl new file mode 100644 index 0000000000..c14f97c87b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/bigbank.account.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/bigbank.account.composite new file mode 100644 index 0000000000..96f0bd652f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/runwsserver.bat new file mode 100644 index 0000000000..f95d5136ef --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.account/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.account/runwsserver.sh new file mode 100755 index 0000000000..eb20a3d670 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.accountmanagement.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.accountmanagement.composite new file mode 100644 index 0000000000..f5f0bbbb57 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.client/AccountClient.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.client/AccountClient.rb new file mode 100644 index 0000000000..731c77c9ce --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.client/Makefile.am new file mode 100644 index 0000000000..4b0b201ac7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.client/Makefile.am @@ -0,0 +1,6 @@ +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-RC1/sca/samples/RubyBank/bigbank.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.client/runclient.bat new file mode 100644 index 0000000000..f50bc2aa2d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/bigbank.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/bigbank.client/runclient.sh new file mode 100755 index 0000000000..7ed579d393 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyBank/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyBank/deploy.cmd new file mode 100644 index 0000000000..59b797e564 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/Makefile.am new file mode 100644 index 0000000000..908112e3cd --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/Makefile.am @@ -0,0 +1,4 @@ +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-RC1/sca/samples/RubyCalculator/README b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/README new file mode 100644 index 0000000000..4104ff46b6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/README.html b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/README.html new file mode 100644 index 0000000000..e5e2a832cf --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/README.html @@ -0,0 +1,249 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. + --> +<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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 + <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></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 <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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=<path to installed Tuscany SCA></LI> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL> + </LI> + <LI>cd <tuscany_sca_install_dir>/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 <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-RC1/sca/samples/RubyCalculator/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/deploy.cmd new file mode 100644 index 0000000000..2609c3b1e5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.client/CalculatorClient.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.client/CalculatorClient.rb new file mode 100644 index 0000000000..253928df0c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am new file mode 100644 index 0000000000..06ffb81173 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.client/Makefile.am @@ -0,0 +1,6 @@ +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-RC1/sca/samples/RubyCalculator/sample.calculator.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.client/runclient.bat new file mode 100644 index 0000000000..4e9cc0f2cd --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.client/runclient.sh new file mode 100755 index 0000000000..974dd2e41c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.solution.composite new file mode 100644 index 0000000000..0a8ae343db --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/Calculator.wsdl new file mode 100644 index 0000000000..f74c3d5c33 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/CalculatorWSClient.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/CalculatorWSClient.rb new file mode 100644 index 0000000000..4022f8a636 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am new file mode 100644 index 0000000000..ab977e5b64 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/Makefile.am @@ -0,0 +1,6 @@ +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-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.bat new file mode 100644 index 0000000000..f9a1ad62a7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/runwsclient.sh new file mode 100755 index 0000000000..ec4053fb74 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator.wsclient/sample.calculator.wsclient.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator/Calculator.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/Calculator.wsdl new file mode 100644 index 0000000000..f74c3d5c33 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator/CalculatorImpl.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/CalculatorImpl.rb new file mode 100644 index 0000000000..36ed15ff9b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/DivideImpl.rb new file mode 100644 index 0000000000..c6615bfcfa --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/Makefile.am new file mode 100644 index 0000000000..6e85ad28a4 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/Makefile.am @@ -0,0 +1,7 @@ +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-RC1/sca/samples/RubyCalculator/sample.calculator/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/runwsserver.bat new file mode 100644 index 0000000000..9870d4600d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/runwsserver.sh new file mode 100755 index 0000000000..69906579b2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/RubyCalculator/sample.calculator/sample.calculator.composite new file mode 100644 index 0000000000..90f68e8234 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.demo.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.demo.solution.composite new file mode 100644 index 0000000000..cf0df165ae --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.demo/DemoClientImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.demo/DemoClientImpl.componentType new file mode 100644 index 0000000000..a63e4c37d3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.demo/supplychain.demo.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.demo/supplychain.demo.composite new file mode 100644 index 0000000000..20b0e49ec1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.logging/LoggerImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.logging/LoggerImpl.componentType new file mode 100644 index 0000000000..e78e602635 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.logging/LoggingFacility.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.logging/LoggingFacility.wsdl new file mode 100644 index 0000000000..c78357b1a8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.logging/supplychain.logging.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.logging/supplychain.logging.composite new file mode 100644 index 0000000000..2b28c8f9e2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturer/Manufacturer.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturer/Manufacturer.wsdl new file mode 100644 index 0000000000..fb0c8a5676 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturer/ManufacturerImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturer/ManufacturerImpl.componentType new file mode 100644 index 0000000000..63530bc0ee --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturer/WarehouseCallback.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturer/WarehouseCallback.wsdl new file mode 100644 index 0000000000..256671f64f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturer/supplychain.manufacturer.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturer/supplychain.manufacturer.composite new file mode 100644 index 0000000000..c61657c0a7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturerA.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturerA.solution.composite new file mode 100644 index 0000000000..17449e51fa --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturerB.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturerB.solution.composite new file mode 100644 index 0000000000..94535d704a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.manufacturerC.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.manufacturerC.solution.composite new file mode 100644 index 0000000000..b4b9380af0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.retailer.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.retailer.solution.composite new file mode 100644 index 0000000000..f7bad01614 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.retailer/Retailer.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.retailer/Retailer.wsdl new file mode 100644 index 0000000000..39bd1963f2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.retailer/RetailerImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.retailer/RetailerImpl.componentType new file mode 100644 index 0000000000..fb381ec9a6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.retailer/supplychain.retailer.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.retailer/supplychain.retailer.composite new file mode 100644 index 0000000000..51a2b96b1b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.warehouse/Warehouse.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.warehouse/Warehouse.wsdl new file mode 100644 index 0000000000..a007f9957b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.warehouse/WarehouseCallbackImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.warehouse/WarehouseCallbackImpl.componentType new file mode 100644 index 0000000000..fbc1edb462 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.warehouse/WarehouseImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.warehouse/WarehouseImpl.componentType new file mode 100644 index 0000000000..7f63d3b571 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/SupplyChain/supplychain.warehouse/supplychain.warehouse.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/SupplyChain/supplychain.warehouse/supplychain.warehouse.composite new file mode 100644 index 0000000000..e44b964eb4 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/autogen.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/autogen.sh new file mode 100755 index 0000000000..18277601c8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/build.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/build.sh new file mode 100755 index 0000000000..7a3c439e8b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/configure.ac b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/configure.ac new file mode 100644 index 0000000000..ad22b15181 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/configure.ac @@ -0,0 +1,150 @@ +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 + RubyBank/Makefile + RubyBank/bigbank.account/Makefile + RubyBank/bigbank.client/Makefile + ]) +AC_OUTPUT diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/AccountClient/AccountClient.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/Accounts/Accounts.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.dsw b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.dsw new file mode 100644 index 0000000000..5771d655c1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncb Binary files differnew file mode 100644 index 0000000000..df956231ae --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.ncb diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.opt b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.opt Binary files differnew file mode 100644 index 0000000000..bbe2b7f841 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/BigBank.opt diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/Build/Build.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/Build/BuildInstructions.txt b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/Build/BuildInstructions.txt diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/WSAccountClient/WSAccountClient.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/BigBank/build.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/BigBank/build.cmd new file mode 100644 index 0000000000..0cf0ac8e3e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Build/Build.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Build/BuildInstructions.txt b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.dsw b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.dsw new file mode 100644 index 0000000000..05f9141d98 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncb b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncb Binary files differnew file mode 100644 index 0000000000..4b6b26f308 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.ncb diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.opt b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.opt Binary files differnew file mode 100644 index 0000000000..2dbad4c658 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator.opt diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Calculator/Calculator.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/Client/Client.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.dsp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/WSClient/WSClient.mak b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/build.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/build.cmd new file mode 100644 index 0000000000..0cf0ac8e3e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/deploy.cmd new file mode 100644 index 0000000000..6e956aa4e6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio6/projects/Calculator/wsdeploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio6/projects/Calculator/wsdeploy.cmd new file mode 100644 index 0000000000..5c4f5fac71 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio7/projects/BigBank/AccountClient/AccountClient.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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;"$(TUSCANY_SDOCPP)/include";"$(TUSCANY_SCACPP)\extensions\cpp\include";"$(TUSCANY_SCACPP)/include""
+ 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=""$(TUSCANY_SCACPP)/lib";"$(TUSCANY_SCACPP)/extensions/cpp/lib";"$(TUSCANY_SDOCPP)/lib""
+ 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;"$(TUSCANY_SDOCPP)/include";"$(TUSCANY_SCACPP)\extensions\cpp\include";"$(TUSCANY_SCACPP)/include""
+ 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=""$(TUSCANY_SCACPP)/lib";"$(TUSCANY_SCACPP)/extensions/cpp/lib";"$(TUSCANY_SDOCPP)/lib""
+ 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-RC1/sca/samples/ides/devstudio7/projects/BigBank/Accounts/Accounts.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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=""$(TUSCANY_SCACPP)/extensions/cpp/lib";"$(TUSCANY_SCACPP)/lib";"$(TUSCANY_SDOCPP)/lib""
+ 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=""$(TUSCANY_SCACPP)/extensions/cpp/lib";"$(TUSCANY_SCACPP)/lib";"$(TUSCANY_SDOCPP)/lib""
+ 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-RC1/sca/samples/ides/devstudio7/projects/BigBank/BigBank.sln b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio7/projects/BigBank/BigBank.sln new file mode 100644 index 0000000000..26a497d219 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio7/projects/BigBank/WSAccountClient/WSAccountClient.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio7/projects/Calculator/Calculator.sln b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio7/projects/Calculator/Calculator.sln new file mode 100644 index 0000000000..271c1ae327 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suo b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suo Binary files differnew file mode 100644 index 0000000000..bf0864adfe --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio7/projects/Calculator/Calculator.suo diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/samples/ides/devstudio7/projects/Calculator/Calculator/Calculator.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio7/projects/Calculator/Client/Client.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio7/projects/Calculator/WSClient/BuildInstructions.txt b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/ides/devstudio7/projects/Calculator/WSClient/WSClient.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/samples/scagen.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/samples/scagen.bat new file mode 100644 index 0000000000..a717341086 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/scatest.bat b/tags/cpp-1.0-incubating-M2-RC1/sca/scatest.bat new file mode 100644 index 0000000000..d749d5e084 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/scatest.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/scatest.sh new file mode 100755 index 0000000000..45d5367550 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/AUTHORS b/tags/cpp-1.0-incubating-M2-RC1/sca/test/AUTHORS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/AUTHORS diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/test/COPYING b/tags/cpp-1.0-incubating-M2-RC1/sca/test/COPYING new file mode 100755 index 0000000000..6b0b1270ff --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ChangeLog b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ChangeLog new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ChangeLog diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/test/INSTALL b/tags/cpp-1.0-incubating-M2-RC1/sca/test/INSTALL new file mode 100644 index 0000000000..b8a53409ed --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/LICENSE b/tags/cpp-1.0-incubating-M2-RC1/sca/test/LICENSE new file mode 100755 index 0000000000..f433b1a53f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/test/Makefile.am new file mode 100644 index 0000000000..28a2e3eeee --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = ws.service.interop diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/test/NEWS b/tags/cpp-1.0-incubating-M2-RC1/sca/test/NEWS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/NEWS diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/test/NOTICE b/tags/cpp-1.0-incubating-M2-RC1/sca/test/NOTICE new file mode 100644 index 0000000000..bfb81409ad --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/README b/tags/cpp-1.0-incubating-M2-RC1/sca/test/README new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/README diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.c b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.c new file mode 100644 index 0000000000..115858f09a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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, ¶m_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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.vcproj b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCClient/WSEntryPointTestRPCClient.vcproj new file mode 100644 index 0000000000..5c48a3a683 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h new file mode 100644 index 0000000000..c804494b46 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl new file mode 100644 index 0000000000..1706534042 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCComposite.vcproj b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCComposite.vcproj new file mode 100644 index 0000000000..f82221700b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType new file mode 100644 index 0000000000..15287150e0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.cpp new file mode 100644 index 0000000000..e2ca28345d --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h new file mode 100644 index 0000000000..7d3b355b8a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.cpp new file mode 100644 index 0000000000..f38fd95c79 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Proxy.h new file mode 100644 index 0000000000..a2da07322c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.cpp new file mode 100644 index 0000000000..93f6cf7a28 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl_WSEntryPointTestRPCService_Wrapper.h new file mode 100644 index 0000000000..3f7b011749 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/sca.composite new file mode 100644 index 0000000000..f454a5bde0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/services.xml b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCComposite/services.xml new file mode 100644 index 0000000000..2fd4580526 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCSubsystem/sca.subsystem b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/WSEntryPointTestRPCSubsystem/sca.subsystem new file mode 100644 index 0000000000..91d3105f5b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/runtime/configuration/WSEntryPointTestRPCSubsystem/sca.subsystem b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/runtime/configuration/WSEntryPointTestRPCSubsystem/sca.subsystem new file mode 100644 index 0000000000..91d3105f5b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.h new file mode 100644 index 0000000000..c804494b46 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPC.wsdl new file mode 100644 index 0000000000..1706534042 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.componentType new file mode 100644 index 0000000000..15287150e0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/WSEntryPointTestRPCImpl.h new file mode 100644 index 0000000000..7d3b355b8a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/sca/test/WSEntryPointTestRPC/runtime/packages/WSEntryPointTestRPCComposite/sca.composite new file mode 100644 index 0000000000..f454a5bde0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/autogen.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/test/autogen.sh new file mode 100755 index 0000000000..af38864985 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/build.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/test/build.sh new file mode 100755 index 0000000000..7a3c439e8b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/configure.ac b/tags/cpp-1.0-incubating-M2-RC1/sca/test/configure.ac new file mode 100644 index 0000000000..f84c32ab1e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.binding.service/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.binding.service/deploy.cmd new file mode 100644 index 0000000000..d6d0c72cb9 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service.client/TestClient.c b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service.client/ws.binding.service.client.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service.sln b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/Test.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/Test.wsdl b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/TestImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/TestImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/TestImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/services.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.binding.service/ws.binding.service/ws.binding.service.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/Makefile.am new file mode 100644 index 0000000000..8f86255889 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/Makefile.am @@ -0,0 +1,8 @@ +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-RC1/sca/test/ws.service.interop/deploy.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/deploy.cmd new file mode 100644 index 0000000000..3aab273673 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/Makefile.am new file mode 100644 index 0000000000..7a20ea0094 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/Makefile.am @@ -0,0 +1,8 @@ +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-RC1/sca/test/ws.service.interop/resources/datagraph.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/datagraph.xsd new file mode 100644 index 0000000000..30727473a0 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/importschema.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/importschema.xsd new file mode 100644 index 0000000000..082c389211 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop.wsdl b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop.wsdl new file mode 100644 index 0000000000..258b31b2bd --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop01-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop01.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop01.xsd new file mode 100644 index 0000000000..083966d9f9 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop02-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop02.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop02.xsd new file mode 100644 index 0000000000..a46c21c4f9 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop03-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop03.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop03.xsd new file mode 100644 index 0000000000..631dc0bfff --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop04-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop04.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop04.xsd new file mode 100644 index 0000000000..4d968e7b3c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop06-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop06.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop06.xsd new file mode 100644 index 0000000000..acedc99232 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop07-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop07.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop07.xsd new file mode 100644 index 0000000000..e1cfc492d2 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop08-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop08.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop08.xsd new file mode 100644 index 0000000000..b7ca9dc916 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop09-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop09.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop09.xsd new file mode 100644 index 0000000000..3a793fd8c5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop10-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop10.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop10.xsd new file mode 100644 index 0000000000..593860b84b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop11-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop11.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop11.xsd new file mode 100644 index 0000000000..a72cda91e5 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop12-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop12.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop12.xsd new file mode 100644 index 0000000000..f428e65bf8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop13-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop13.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop13.xsd new file mode 100644 index 0000000000..3d553a7171 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop14-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop14.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop14.xsd new file mode 100644 index 0000000000..0155718348 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop15-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop15.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop15.xsd new file mode 100644 index 0000000000..ad59a9710b --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop16-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop16.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop16.xsd new file mode 100644 index 0000000000..f6518cfb3f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop17-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop17.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop17.xsd new file mode 100644 index 0000000000..bbfc755fb7 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop18-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop18.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop18.xsd new file mode 100644 index 0000000000..de8dc5b79e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop19-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop19.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop19.xsd new file mode 100644 index 0000000000..7d28e0d9b3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop20-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop20.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop20.xsd new file mode 100644 index 0000000000..1c4ffa6a5c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop21-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop21.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop21.xsd new file mode 100644 index 0000000000..4888a7d385 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop22-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop22.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop22.xsd new file mode 100644 index 0000000000..11c8d5c980 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop23-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop23.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop23.xsd new file mode 100644 index 0000000000..b2f358c69e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop24-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop24.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop24.xsd new file mode 100644 index 0000000000..c7c5a7f1af --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop25-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop26-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop26.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop26.xsd new file mode 100644 index 0000000000..dc72404fae --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop27-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop28-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop28.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop28.xsd new file mode 100644 index 0000000000..36ca723a0c --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop29-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop29.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop29.xsd new file mode 100644 index 0000000000..febb95142e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop30-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop30.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop30.xsd new file mode 100644 index 0000000000..d42361b509 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop31-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop31.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop31.xsd new file mode 100644 index 0000000000..9ba51daca8 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop32-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop32.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop32.xsd new file mode 100644 index 0000000000..bf33516371 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop33-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop33.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop33.xsd new file mode 100644 index 0000000000..27f6c22d12 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop34-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop34.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop34.xsd new file mode 100644 index 0000000000..8fe33e9776 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop35-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop35.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop35.xsd new file mode 100644 index 0000000000..706326b22f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop36-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop36.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop36.xsd new file mode 100644 index 0000000000..2e1c95b1c3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop37-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop37.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop37.xsd new file mode 100644 index 0000000000..b2afa51290 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop38-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop38.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop38.xsd new file mode 100644 index 0000000000..a4b406550a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop39-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop40-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop40.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop40.xsd new file mode 100644 index 0000000000..3e2ca8765a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop41-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop41.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop41.xsd new file mode 100644 index 0000000000..a473626f03 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop42-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop42.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop42.xsd new file mode 100644 index 0000000000..99a9afecd1 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop43-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop43.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop43.xsd new file mode 100644 index 0000000000..60d31e94cc --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop44-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop44.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop44.xsd new file mode 100644 index 0000000000..45c74b90fa --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop45-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop45.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop45.xsd new file mode 100644 index 0000000000..7a6236c9eb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop46-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop46.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop46.xsd new file mode 100644 index 0000000000..54573c0bdb --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop47-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop47.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop47.xsd new file mode 100644 index 0000000000..be67383db3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/resources/interop50-in.xml b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/resources/interop50.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/resources/interop50.xsd new file mode 100644 index 0000000000..f2d4ed7679 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/runtest.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/runtest.sh new file mode 100755 index 0000000000..831246bbc6 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am new file mode 100644 index 0000000000..4186694568 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/ws.service.interop.client/Makefile.am @@ -0,0 +1,34 @@ +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-RC1/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop.client/runclient.bat b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop.client/runclient.sh b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop.client/ws.service.interop.client.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop.sln b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/ws.service.interop/Makefile.am new file mode 100644 index 0000000000..30c2efc732 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/test/ws.service.interop/ws.service.interop/Makefile.am @@ -0,0 +1,36 @@ +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-RC1/sca/test/ws.service.interop/ws.service.interop/Test.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/TestImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/TestImpl.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/TestImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/runwsserver.bat b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/runwsserver.sh b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.solution.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/test/ws.service.interop/ws.service.interop/ws.service.interop.vcproj b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/Makefile.am new file mode 100644 index 0000000000..0bea197e35 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = scagen
\ No newline at end of file diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/META-INF/LICENSE b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/META-INF/LICENSE new file mode 100755 index 0000000000..f433b1a53f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/META-INF/NOTICE b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/META-INF/NOTICE new file mode 100644 index 0000000000..bfb81409ad --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/META-INF/README b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/META-INF/README new file mode 100644 index 0000000000..2831dadd94 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/Makefile.am b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/Makefile.am new file mode 100644 index 0000000000..0d8e880488 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/Makefile.am @@ -0,0 +1,19 @@ +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-RC1/sca/tools/scagen/build.xml b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/build.xml new file mode 100644 index 0000000000..a7bb207ee3 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/CalculatorTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/EnvHandlerTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceButNotInClassAttrTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/ImplClassWithNameSpaceTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceButNotInClassAttrTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/IntfClassWithNameSpaceTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/MissingCompositeAndFragmentTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/SimplePublicPrivateProtectedTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestAllCompositesTest.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TestDeployAssistTool.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/org/apache/tuscany/sca/cpp/tools/junit/TuscanyTestCase.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/scripts_for_standalone_testing/go.cmd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_dir_option.cmd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_input_dir.cmd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/scripts_for_standalone_testing/go_no_output_dir.cmd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/scripts_for_standalone_testing/refresh-tools-jar.cmd b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/Calculator.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/CalculatorImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorCompositeAndComponent/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorBack.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/otherSubFolder/CalculatorForward.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorBackImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CalculatorSlashDirectionTest/subFolder/CalculatorForwardImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplMultiParamDiffTypesTest/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/CustomerInfoImplSingleParamDiffTypesTest/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceComposite/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespace/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespace/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/CustomerInfo.fragmentX b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeMissingScaComposite/sca.compositeX b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValue.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl.hpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/StockQuoteService.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/MyValueServiceCompositeTwoClasses/sca.composite b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.fragment b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfo.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.componentType b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testinput/composites/SimplePublicPrivateProtectedTest/CustomerInfoImpl.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorCompositeAndComponent/expected_output/CalculatorImpl_CalculatorService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorBackImpl_CalculatorService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CalculatorSlashDirectionTest/expected_output/CalculatorForwardImpl_CalculatorService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplMultiParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/CustomerInfoImplSingleParamDiffTypesTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_customerInfo_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceComposite/expected_output/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_customerInfo_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespace/expected_output/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeImplClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespace/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeIntfClassWithNamespaceButNotInClassAttr/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/CustomerInfoImpl2_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_MyValueService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_customerInfo_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/MyValueServiceCompositeTwoClasses/expected_output/MyValueImpl_stockQuote_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Proxy.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.cpp b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/junit/testoutput/SimplePublicPrivateProtectedTest/expected_output/CustomerInfoImpl_CustomerInfoService_Wrapper.h b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/lib/readme.txt b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/lib/readme.txt new file mode 100644 index 0000000000..d99c666c6a --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/scagen.cmd b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/scagen.cmd new file mode 100644 index 0000000000..8ab5e4abdf --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/scagen.sh b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/scagen.sh new file mode 100755 index 0000000000..c50f28b98f --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/BodyPart.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/CParsingTool.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Configuration.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/DirectoryTree.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FileActor.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/FilePart.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Headers.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/InputCppSourceCode.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MacroPart.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/MethodPart.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Options.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Parameter.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/ParsingException.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/PrototypePart.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Signature.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/Utils.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html new file mode 100644 index 0000000000..c86184f441 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/common/package.html @@ -0,0 +1,39 @@ +<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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ComponentTypeFileHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/CompositeOrFragmentFileHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DirectoryScanner.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/DomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/GenericDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/LittleClass.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ReferenceDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/Scagen.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServiceDomNodeHandler.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/ServicesGenerator.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/XMLFileActor.java b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html new file mode 100644 index 0000000000..2971ffabee --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/package.html @@ -0,0 +1,140 @@ +<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 <component/> elements +within them. </p> + +<p>Each <component/> element found is inspected to see if +it has a <implementation.cpp/> element within it. </p> + +<p>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. </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 <service/> +and <reference/> elements. For each <service/> element that is +found that contains a <interface.cpp/> element within it,</p> + +<p>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 headers are generated in the given output +directory. The processing of a <reference/> 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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyCPP.xsl b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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->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, '&')"><!-- reference --> + <xsl:variable name="type_no_amp"> + <xsl:value-of select="substring-before($type, '&')"/> + </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, '&')"><!-- reference --> + </xsl:when> + <xsl:otherwise> +<xsl:text> + </xsl:text> <xsl:value-of select="$type"/><xsl:text> ret; + operation.setReturnValue(&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(&<xsl:value-of select="$scaOperationParameterNameAttrInner"/><xsl:text>);</xsl:text> +</xsl:template> +</xsl:stylesheet> diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfProxyHeader.xsl b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperCPP.xsl b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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& operation) +{ + const string& 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, '&')"><!-- reference --> + <xsl:variable name="type_no_amp"> + <xsl:value-of select="substring-before($type, '&')"/> + </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& 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>& 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, '&')"><!-- 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(&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-RC1/sca/tools/scagen/src/org/apache/tuscany/sca/cpp/tools/services/xsl/SCA4CPPIntfWrapperHeader.xsl b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/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& 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-RC1/sca/xsd/readme.txt b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/readme.txt new file mode 100644 index 0000000000..7252f56a11 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/readme.txt @@ -0,0 +1,2 @@ +The XSDs describing the SCA model + diff --git a/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca-core.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca-core.xsd new file mode 100644 index 0000000000..d7661e3994 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/xsd/sca-implementation-composite.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca-implementation-composite.xsd new file mode 100644 index 0000000000..4bcc6747ba --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/xsd/sca-implementation-java.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca-implementation-java.xsd new file mode 100644 index 0000000000..e20f0a9b50 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/xsd/sca-interface-java.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca-interface-java.xsd new file mode 100644 index 0000000000..a6028c1434 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/xsd/sca-interface-wsdl.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca-interface-wsdl.xsd new file mode 100644 index 0000000000..a3de838b7e --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/xsd/sca.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/sca.xsd new file mode 100644 index 0000000000..8853f25c11 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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-RC1/sca/xsd/tuscany.xsd b/tags/cpp-1.0-incubating-M2-RC1/sca/xsd/tuscany.xsd new file mode 100644 index 0000000000..8bad940782 --- /dev/null +++ b/tags/cpp-1.0-incubating-M2-RC1/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> |