summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06')
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/build.xml214
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/pom.xml186
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchBPELExampleNode.java66
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchSpringExampleNode.java66
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/log4j.properties36
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/pom.xml181
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/CreditCardPayment.wsdl117
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/payment.bpel164
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/PaymentTestCase.java71
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/client/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/payment.composite47
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/pom.xml166
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/CreditCardPayment.wsdl116
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/META-INF/sca-contribution.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment.composite48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment/PaymentImpl.groovy31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/PaymentTestCase.java76
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/client/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/creditcard/CreditCardPaymentImpl.java41
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/scatours/emailgateway/EmailGatewayImpl.java29
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/pom.xml166
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/payment/PaymentImpl.java78
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java29
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/CreditCardPayment.wsdl116
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment-context.xml44
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/PaymentTestCase.java73
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/client/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/payment.composite48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/pom.xml184
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/payment/PaymentImpl.java64
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java29
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/CreditCardPayment.wsdl116
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment-context.xml34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/PaymentTestCase.java73
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/client/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/META-INF/sca-contribution.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/payment.composite47
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/pom.xml51
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/build.xml117
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/pom.xml88
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.composite178
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.html391
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.odgbin0 -> 11477 bytes
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.pngbin0 -> 11061 bytes
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/style.css135
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/build.xml117
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/pom.xml88
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/META-INF/sca-contribution.xml37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.composite169
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.html391
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.odgbin0 -> 11477 bytes
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.pngbin0 -> 11061 bytes
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/style.css135
67 files changed, 5687 insertions, 0 deletions
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/build.xml
new file mode 100644
index 0000000000..e49a915d6d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/build.xml
@@ -0,0 +1,214 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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="scatours-chapter-06-node" default="compile">
+
+ <target name="compile">
+ <mkdir dir="target/classes"/>
+ <javac destdir="target/classes" debug="on" source="1.5" target="1.5">
+ <src path="src\main\java"/>
+ <classpath>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="src\main\resources"/>
+ </copy>
+ <jar destfile="target/scatours-chapter-06-node.jar" basedir="target/classes">
+ <manifest>
+ <attribute name="Main-Class" value="launch.LaunchTutorialAdmin"/>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="package" depends="compile"/>
+
+ <target name="run">
+ <java classname="launch.LaunchTutorialAdmin" fork="true">
+ <classpath>
+ <pathelement location="target/scatours-chapter-06-node.jar"/>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </java>
+ </target>
+
+ <target name="clean">
+ <delete includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ </target>
+
+ <fileset id="tuscany.jars" dir="../../modules">
+ <include name="tuscany-assembly-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-assembly-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-assembly-xsd-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-atom-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-atom-abdera-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-atom-js-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-http-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-http-runtime-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-jsonrpc-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-jsonrpc-runtime-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-axis2-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-ws-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-ws-axis2-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-ws-axis2-policy-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-ws-wsdlgen-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-ws-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-namespace-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-resource-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-databinding-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-spi-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-data-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-axiom-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-jaxb-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-jaxb-axiom-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-json-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-definitions-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-definitions-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-domain-manager-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-endpoint-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-extensibility-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-embedded-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-http-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-jetty-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-java-runtime-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-java-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-node-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-node-runtime-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-resource-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-resource-runtime-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-spring-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-widget-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-widget-runtime-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-widget-runtime-tuscany-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-jaxws-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-wsdl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-wsdl-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-monitor-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-launcher-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-manager-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-security-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-security-http-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-xml-ws-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-sca-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-sca-api-extension-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-web-javascript-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-workspace-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-workspace-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-workspace-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-xsd-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-xsd-xml-1.6-SNAPSHOT.jar"/>
+ </fileset>
+ <fileset id="3rdparty.jars" dir="../../lib">
+ <include name="XmlSchema-1.4.2.jar"/>
+ <include name="abdera-client-0.4.0-incubating.jar"/>
+ <include name="abdera-core-0.4.0-incubating.jar"/>
+ <include name="abdera-extensions-html-0.4.0-incubating.jar"/>
+ <include name="abdera-extensions-json-0.4.0-incubating.jar"/>
+ <include name="abdera-extensions-main-0.4.0-incubating.jar"/>
+ <include name="abdera-i18n-0.4.0-incubating.jar"/>
+ <include name="abdera-parser-0.4.0-incubating.jar"/>
+ <include name="abdera-server-0.4.0-incubating.jar"/>
+ <include name="activation-1.1.jar"/>
+ <include name="annogen-0.1.0.jar"/>
+ <include name="aopalliance-1.0.jar"/>
+ <include name="asm-all-3.1.jar"/>
+ <include name="axiom-api-1.2.7.jar"/>
+ <include name="axiom-dom-1.2.7.jar"/>
+ <include name="axiom-impl-1.2.7.jar"/>
+ <include name="axis-ant-1.4.jar"/>
+ <include name="axis2-adb-1.4.1.jar"/>
+ <include name="axis2-codegen-1.4.1.jar"/>
+ <include name="axis2-java2wsdl-1.4.1.jar"/>
+ <include name="axis2-kernel-1.4.1.jar"/>
+ <include name="axis2-mtompolicy-1.4.1.jar"/>
+ <include name="backport-util-concurrent-3.1.jar"/>
+ <include name="bcprov-jdk13-132.jar"/>
+ <include name="cglib-nodep-2.2.jar"/>
+ <include name="commons-codec-1.3.jar"/>
+ <include name="commons-collections-3.1.jar"/>
+ <include name="commons-discovery-0.2.jar"/>
+ <include name="commons-fileupload-1.2.jar"/>
+ <include name="commons-httpclient-3.1.jar"/>
+ <include name="commons-io-1.4.jar"/>
+ <include name="commons-logging-1.1.1.jar"/>
+ <include name="derby-10.3.1.4.jar"/>
+ <include name="geronimo-activation_1.1_spec-1.0.1.jar"/>
+ <include name="geronimo-javamail_1.4_spec-1.2.jar"/>
+ <include name="geronimo-jms_1.1_spec-1.1.jar"/>
+ <include name="geronimo-stax-api_1.0_spec-1.0.1.jar"/>
+ <include name="htmlparser-1.0.5.jar"/>
+ <include name="httpcore-4.0-beta1.jar"/>
+ <include name="httpcore-nio-4.0-beta1.jar"/>
+ <include name="jaxb-api-2.1.jar"/>
+ <include name="jaxb-impl-2.1.7.jar"/>
+ <include name="jaxen-1.1.1.jar"/>
+ <include name="jaxws-api-2.1.jar"/>
+ <include name="jettison-1.0.1.jar"/>
+ <include name="jetty-6.1.7.jar"/>
+ <include name="jetty-util-6.1.7.jar"/>
+ <include name="json-rpc-1.0.jar"/>
+ <include name="jsr181-api-1.0-MR1.jar"/>
+ <include name="jsr250-api-1.0.jar"/>
+ <include name="junit-4.5.jar"/>
+ <include name="log4j-1.2.15.jar"/>
+ <include name="mail-1.4.jar"/>
+ <include name="mex-1.41-impl.jar"/>
+ <include name="neethi-2.0.4.jar"/>
+ <include name="opensaml-1.1.jar"/>
+ <include name="rampart-core-1.4.jar"/>
+ <include name="rampart-policy-1.4.jar"/>
+ <include name="rampart-trust-1.4.jar"/>
+ <include name="servlet-api-2.5.jar"/>
+ <include name="spring-beans-2.5.5.jar"/>
+ <include name="spring-context-2.5.5.jar"/>
+ <include name="spring-core-2.5.5.jar"/>
+ <include name="stax-api-1.0-2.jar"/>
+ <include name="woden-api-1.0M8.jar"/>
+ <include name="woden-impl-dom-1.0M8.jar"/>
+ <include name="wsdl4j-1.6.2.jar"/>
+ <include name="wss4j-1.5.4.jar"/>
+ <include name="wstx-asl-3.2.4.jar"/>
+ <include name="xalan-2.7.0.jar"/>
+ <include name="xercesImpl-2.8.1.jar"/>
+ <include name="xml-apis-1.3.03.jar"/>
+ <include name="xmlParserAPIs-2.6.0.jar"/>
+ <include name="xmlsec-1.4.2.jar"/>
+ </fileset>
+
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/pom.xml
new file mode 100644
index 0000000000..19262eeb89
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/pom.xml
@@ -0,0 +1,186 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-chapter-06-node</artifactId>
+ <name>Apache Tuscany SCA Tours Chapter 06 Node</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-launcher</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-domain-manager</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-widget-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-resource-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-http-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-sca-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchTutorialAdmin</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-322 -->
+ <version>2.3.1</version>
+ <configuration>
+ <useFile>false</useFile>
+ <trimStackTrace>false</trimStackTrace>
+ <useSystemClassLoader>true</useSystemClassLoader>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-dao-jpa-ojpa-derby</artifactId>
+ <version>1.1</version>
+ <type>zip</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/test-classes/</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchBPELExampleNode.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchBPELExampleNode.java
new file mode 100644
index 0000000000..e87b0ca44e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchBPELExampleNode.java
@@ -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.
+ */
+
+package scatours;
+
+import java.io.IOException;
+
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+
+public class LaunchBPELExampleNode {
+ public static void main(String[] args) throws Exception {
+ LaunchBPELExampleNode.launchFromFileSystemDir();
+ }
+
+ // OK for development but you must launch the node from this module
+ public static void launchFromFileSystemDir(){
+ SCANode node = null;
+
+ try {
+ node = SCANodeFactory.newInstance().createSCANode("scatours.composite",
+ new SCAContribution("common", "../../shared-contributions/common-contribution/target/classes"),
+ new SCAContribution("currency", "../../shared-contributions/currency-contribution/target/classes"),
+ new SCAContribution("hotel", "../../shared-contributions/hotel-contribution/target/classes"),
+ new SCAContribution("flight", "../../shared-contributions/flight-contribution/target/classes"),
+ new SCAContribution("car", "../../shared-contributions/car-contribution/target/classes"),
+ new SCAContribution("trip", "../../shared-contributions/trip-contribution/target/classes"),
+ new SCAContribution("tripbooking", "../../shared-contributions/tripbooking-contribution/target/classes"),
+ new SCAContribution("travelcatalog", "../../shared-contributions/travelcatalog-contribution/target/classes"),
+ new SCAContribution("creditcardpayment", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/classes"),
+ new SCAContribution("emailgateway", "../../shared-contributions/emailgateway-contribution/target/classes"),
+ new SCAContribution("shoppingcart", "../../shared-contributions/shoppingcart-contribution/target/classes"),
+ new SCAContribution("scatours", "../../shared-contributions/scatours-contribution/target/classes"),
+ new SCAContribution("payment", "../payment-bpel-contribution/target/classes"),
+ new SCAContribution("ui", "../ui-bpel-contribution/target/classes"));
+ node.start();
+
+ System.out.println("Node started - Press enter to shutdown.");
+ try {
+ System.in.read();
+ } catch (IOException e) {}
+
+ node.stop();
+
+ } catch (Exception ex) {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchSpringExampleNode.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchSpringExampleNode.java
new file mode 100644
index 0000000000..45c9be4bce
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/node/src/main/java/scatours/LaunchSpringExampleNode.java
@@ -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.
+ */
+
+package scatours;
+
+import java.io.IOException;
+
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+
+public class LaunchSpringExampleNode {
+ public static void main(String[] args) throws Exception {
+ LaunchSpringExampleNode.launchFromFileSystemDir();
+ }
+
+ // OK for development but you must launch the node from this module
+ public static void launchFromFileSystemDir(){
+ SCANode node = null;
+
+ try {
+ node = SCANodeFactory.newInstance().createSCANode("scatours.composite",
+ new SCAContribution("common", "../../shared-contributions/common-contribution/target/classes"),
+ new SCAContribution("currency", "../../shared-contributions/currency-contribution/target/classes"),
+ new SCAContribution("hotel", "../../shared-contributions/hotel-contribution/target/classes"),
+ new SCAContribution("flight", "../../shared-contributions/flight-contribution/target/classes"),
+ new SCAContribution("car", "../../shared-contributions/car-contribution/target/classes"),
+ new SCAContribution("trip", "../../shared-contributions/trip-contribution/target/classes"),
+ new SCAContribution("tripbooking", "../../shared-contributions/tripbooking-contribution/target/classes"),
+ new SCAContribution("travelcatalog", "../../shared-contributions/travelcatalog-contribution/target/classes"),
+ new SCAContribution("creditcardpayment", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/classes"),
+ new SCAContribution("emailgateway", "../../shared-contributions/emailgateway-contribution/target/classes"),
+ new SCAContribution("shoppingcart", "../../shared-contributions/shoppingcart-contribution/target/classes"),
+ new SCAContribution("scatours", "../../shared-contributions/scatours-contribution/target/classes"),
+ new SCAContribution("payment", "../payment-spring-annotation-contribution/target/classes"),
+ new SCAContribution("ui", "../ui-spring-contribution/target/classes"));
+ node.start();
+
+ System.out.println("Node started - Press enter to shutdown.");
+ try {
+ System.in.read();
+ } catch (IOException e) {}
+
+ node.stop();
+
+ } catch (Exception ex) {
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/log4j.properties b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/log4j.properties
new file mode 100644
index 0000000000..7ed0bcaf77
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/log4j.properties
@@ -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.
+#
+
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=OFF, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.mortbay=OFF
+log4j.category.org.hibernate.type=OFF
+log4j.category.org.objectweb=OFF
+log4j.category.org.apache.ode.axis2=OFF
+log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=OFF
+log4j.category.org.apache.ode.bpel.epr=OFF
+log4j.category.org.apache.tuscany.sca.implementation.bpel=DEBUG
+log4j.category.org.apache.tuscany.sca.implementation.bpel.ode=DEBUG
+log4j.category.org.apache.tuscany.sca.implementation.bpel.provider=DEBUG
+
+# Console appender
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=[%p] - %C{1}.%M(%L) | %m%n
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/pom.xml
new file mode 100644
index 0000000000..8cfe95771a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/pom.xml
@@ -0,0 +1,181 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-chapter-06-payment-bpel-contribution</artifactId>
+ <name>Apache Tuscany SCA Tours Chapter 06 Payment BPEL Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-bpel-ode</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-emailgateway-contribution</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-creditcard-payment-jaxb-contribution</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.9</version>
+ <executions>
+ <execution>
+ <id>wsimport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>scatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources
+ </wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source
+ </sourceDestDir>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-322 -->
+ <version>2.3.1</version>
+ <configuration>
+ <useFile>false</useFile>
+ <trimStackTrace>false</trimStackTrace>
+ <useSystemClassLoader>true</useSystemClassLoader>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-dao-jpa-ojpa-derby</artifactId>
+ <version>1.1</version>
+ <type>zip</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/classes/</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..22ef6de317
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,117 @@
+<?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="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ elementFormDefault="unqualified">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8081/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..a097d9b7e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?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="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8082/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..725c95a2bd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export namespace="http://www.tuscanyscatours.com/Payment"/>
+ <export namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?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="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/payment.bpel b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/payment.bpel
new file mode 100644
index 0000000000..8f11d76888
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/main/resources/payment.bpel
@@ -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.
+ -->
+<process name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ xmlns="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:tns="http://tuscany.apache.org/Payment"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment/"
+ xmlns:ccp="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:eg="http://www.tuscanyscatours.com/EmailGateway/"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+ <import location="Payment.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://www.tuscanyscatours.com/Payment/"/>
+
+ <import location="CreditCardPayment.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://www.tuscanyscatours.com/CreditCardPayment/"/>
+
+ <import location="EmailGateway.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://www.tuscanyscatours.com/EmailGateway/"/>
+
+ <partnerLinks>
+ <partnerLink name="paymentPartnerLink" partnerLinkType="pp:PaymentLinkType" myRole="forward" />
+ <partnerLink name="creditCardPaymentPartnerLink" partnerLinkType="ccp:CreditCardPaymentLinkType" partnerRole="forward" initializePartnerRole="yes" />
+ <partnerLink name="emailGatewayPartnerLink" partnerLinkType="eg:EmailGatewayLinkType" partnerRole="forward" initializePartnerRole="yes" />
+ </partnerLinks>
+
+ <variables>
+ <variable name="makePaymentMemberRequestMessage" messageType="pp:MakePaymentMemberRequest"/>
+ <variable name="makePaymentMemberResponseMessage" messageType="pp:MakePaymentMemberResponse"/>
+ <variable name="authorizeRequestMessage" messageType="ccp:AuthorizeRequest"/>
+ <variable name="authorizeResponseMessage" messageType="ccp:AuthorizeResponse"/>
+ <variable name="sendEmailRequestMessage" messageType="eg:SendEmailRequest"/>
+ <variable name="sendEmailResponseMessage" messageType="eg:SendEmailResponse"/>
+ </variables>
+
+ <sequence>
+ <receive name="start"
+ partnerLink="paymentPartnerLink"
+ portType="pp:Payment"
+ operation="makePaymentMember"
+ variable="makePaymentMemberRequestMessage"
+ createInstance="yes"/>
+
+ <!-- set up call to payments service -->
+ <assign name="assign1">
+ <copy>
+ <from>
+ <literal>
+ <authorize xmlns="http://www.tuscanyscatours.com/CreditCardPayment/">
+ <CreditCard xmlns="">
+ <CreditCardType>Visa</CreditCardType>
+ <CreditCardNumber>12345678</CreditCardNumber>
+ <ExpMonth>2</ExpMonth>
+ <ExpYear>2010</ExpYear>
+ <CardOwner>
+ <Name>Empty</Name>
+ <Address>
+ <Street>1 The Road</Street>
+ <City>Winchester</City>
+ <State>Hampshire</State>
+ <ZipCode>AB1 2CD</ZipCode>
+ <HomePhone>12345678</HomePhone>
+ </Address>
+ </CardOwner>
+ </CreditCard>
+ <Amount xmlns="">0.0</Amount>
+ </authorize>
+ </literal>
+ </from>
+ <to>$authorizeRequestMessage.parameters</to>
+ </copy>
+ <copy>
+ <from>$makePaymentMemberRequestMessage.parameters/CustomerId/text()</from>
+ <to>$authorizeRequestMessage.parameters/CreditCard/CardOwner/Name</to>
+ </copy>
+ <copy>
+ <from>$makePaymentMemberRequestMessage.parameters/Amount/text()</from>
+ <to>$authorizeRequestMessage.parameters/Amount</to>
+ </copy>
+ </assign>
+
+ <invoke name="invokeCreditCardPayment"
+ operation="authorize"
+ inputVariable="authorizeRequestMessage"
+ outputVariable="authorizeResponseMessage"
+ partnerLink="creditCardPaymentPartnerLink"
+ portType="ccp:CreditCardPayment" />
+
+ <!-- set up call to email gateway service -->
+ <assign name="assign2">
+ <copy>
+ <from>
+ <literal>
+ <sendEmail xmlns="http://www.tuscanyscatours.com/EmailGateway/">
+ <Email xmlns="">
+ <To>Default</To>
+ <Title>Payment Confirmation</Title>
+ <Body>Your payment has been confirmed</Body>
+ </Email>
+ </sendEmail>
+ </literal>
+ </from>
+ <to>$sendEmailRequestMessage.parameters</to>
+ </copy>
+ <copy>
+ <from>$makePaymentMemberRequestMessage.parameters/CustomerId/text()</from>
+ <to>$sendEmailRequestMessage.parameters/Email/To</to>
+ </copy>
+ </assign>
+
+ <!-- call the email gateway to send a confirmation -->
+ <invoke name="invokeEmailGateway"
+ operation="sendEmail"
+ inputVariable="sendEmailRequestMessage"
+ outputVariable="sendEmailResponseMessage"
+ partnerLink="emailGatewayPartnerLink"
+ portType="eg:EmailGateway" />
+
+ <!-- set up the response -->
+ <assign name="assign3">
+ <copy>
+ <from>
+ <literal>
+ <makePaymentMemberResponse xmlns="http://www.tuscanyscatours.com/Payment">
+ <Status xmlns="">OK</Status>
+ </makePaymentMemberResponse>
+ </literal>
+ </from>
+ <to>$makePaymentMemberResponseMessage.parameters</to>
+ </copy>
+ </assign>
+
+
+ <reply name="end"
+ partnerLink="paymentPartnerLink"
+ portType="pp:Payment"
+ operation="makePaymentMember"
+ variable="makePaymentMemberResponseMessage">
+ </reply>
+ </sequence>
+</process>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..a69c16a726
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/PaymentTestCase.java
@@ -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.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+ private static SCANode emailGatewayNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ try {
+ creditCardNode = SCANodeFactory.newInstance().createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/test-classes"));
+ emailGatewayNode = SCANodeFactory.newInstance().createSCANode("emailgateway.composite",
+ new SCAContribution("creditcard", "../../shared-contributions/emailgateway-contribution/target/test-classes"));
+ paymentNode = SCANodeFactory.newInstance().createSCANode("payment.composite",
+ new SCAContribution("payment-bpel", "./target/classes"),
+ new SCAContribution("payment-bpel-test", "./target/test-classes"));
+
+ creditCardNode.start();
+ emailGatewayNode.start();
+ paymentNode.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient) paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("Fred", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ emailGatewayNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/client/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/client/PaymentClientImpl.java
new file mode 100644
index 0000000000..eaa7498e84
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/java/scatours/payment/client/PaymentClientImpl.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.
+ */
+
+package scatours.payment.client;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import scatours.payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..4984ef0252
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import namespace="http://www.tuscanyscatours.com/Payment"/>
+ <import namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/payment.composite
new file mode 100644
index 0000000000..ab26a48b20
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-bpel-contribution/src/test/resources/payment.composite
@@ -0,0 +1,47 @@
+<?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:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ name="payment">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8080/Payment" />
+ </reference>
+ </component>
+
+ <component name="Payment">
+ <implementation.bpel process="pp:Payment"/>
+ <service name="paymentPartnerLink">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
+ <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
+ </service>
+ <reference name="creditCardPaymentPartnerLink">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment"/>
+ </reference>
+ <reference name="emailGatewayPartnerLink">
+ <binding.ws uri="http://localhost:8082/EmailGateway"/>
+ </reference>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/pom.xml
new file mode 100644
index 0000000000..67882f6ddb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/pom.xml
@@ -0,0 +1,166 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-payment-javascript-contribution</artifactId>
+ <name>Apache Tuscany SCA Tours Payment JavaScript Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-script</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.9</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>scatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..1813c77436
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,116 @@
+<?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="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..a097d9b7e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?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="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8082/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..7adba24d58
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="payment"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..2519d7642e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?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="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8083/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment.composite
new file mode 100644
index 0000000000..9743f24ada
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment.composite
@@ -0,0 +1,48 @@
+<?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"
+ targetNamespace="http://scatours"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:c="http://scatours"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ name="payment">
+
+ <component name="PaymentClient">
+ <implementation.java class="payment.client.PaymentClientImpl" />
+ <reference name="payment" target="PaymentComponent">
+ <interface.java interface="payment.Payment" />
+ </reference>
+ </component>
+
+ <component name="PaymentComponent">
+ <t:implementation.script script="payment/PaymentImpl.groovy"/>
+ <service name="Payment">
+ <interface.java interface="payment.Payment" />
+ </service>
+ <reference name="emailGateway" target="EmailGatewayComponent">
+ <interface.java interface="scatours.emailgateway.EmailGateway" />
+ </reference>
+ <property name="processingCharge" type="xsd:float">9.73</property>
+ </component>
+
+ <component name="EmailGatewayComponent">
+ <implementation.java class="scatours.emailgateway.EmailGatewayImpl" />
+ </component>
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment/PaymentImpl.groovy b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment/PaymentImpl.groovy
new file mode 100644
index 0000000000..dab3003eed
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/main/resources/payment/PaymentImpl.groovy
@@ -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.
+ */
+
+def makePaymentMember(customerId, amount) {
+
+ def finalAmount = amount + processingCharge;
+
+ scatours.emailgateway.EmailType email = new scatours.emailgateway.EmailType();
+ email.setTo(customerId);
+ email.setTitle("Payment " + finalAmount + " Received");
+
+ emailGateway.sendEmail(email);
+
+ return "Success";
+} \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..21bf6ff428
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/PaymentTestCase.java
@@ -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.
+ */
+
+package payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode node;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ SCANodeFactory factory = SCANodeFactory.newInstance();
+ node = factory.createSCANodeFromClassLoader("payment.composite", Payment.class.getClassLoader());
+ node.start();
+ }
+
+ @Test
+ public void testCreditCardPayment() {
+ SCAClient client = (SCAClient) node;
+ Payment payment = client.getService(Payment.class, "PaymentComponent");
+ System.out.println(payment.makePaymentMember("Fred Bloggs", 100.00f));
+ }
+
+ @Test
+ //@Ignore
+ public void testWaitForInput() {
+/*
+ System.out.println("Press a key to end");
+ try {
+ System.in.read();
+ } catch (Exception ex) {
+ }
+ System.out.println("Shutting down");
+*/
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node != null) {
+ node.stop();
+ node = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/client/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/client/PaymentClientImpl.java
new file mode 100644
index 0000000000..556a699ad8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/client/PaymentClientImpl.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.
+ */
+
+package payment.client;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/creditcard/CreditCardPaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/creditcard/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..ac05bf7359
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/payment/creditcard/CreditCardPaymentImpl.java
@@ -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.
+ */
+
+package payment.creditcard;
+
+import org.osoa.sca.annotations.Service;
+
+@Service(CreditCardPayment.class)
+public class CreditCardPaymentImpl implements CreditCardPayment {
+
+ public String authorize(CreditCardDetailsType creditCard, float amount) {
+ if (creditCard != null){
+ System.out.println("Checking card: name = " +
+ creditCard.getCardOwner().getName() +
+ " number = " +
+ creditCard.getCreditCardNumber() +
+ " for amount " +
+ amount);
+ } else {
+ System.out.println("Checking card is null");
+ }
+
+ return "OK";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/scatours/emailgateway/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/scatours/emailgateway/EmailGatewayImpl.java
new file mode 100644
index 0000000000..974c902f5d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-javascript-contribution/src/test/java/scatours/emailgateway/EmailGatewayImpl.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 scatours.emailgateway;
+
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail " + email.getTitle() + " to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/pom.xml
new file mode 100644
index 0000000000..3018bc651d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/pom.xml
@@ -0,0 +1,166 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-payment-spring-annotation-contribution</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Spring Annotation Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.9</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>scatours.emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>scatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/payment/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/payment/PaymentImpl.java
new file mode 100644
index 0000000000..68e941e138
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/payment/PaymentImpl.java
@@ -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.
+ */
+
+package payment;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import payment.creditcard.CreditCardDetailsType;
+import payment.creditcard.CreditCardPayment;
+import payment.creditcard.CreditCardTypeType;
+import payment.creditcard.ObjectFactory;
+import payment.creditcard.PayerType;
+import scatours.emailgateway.EmailGateway;
+import scatours.emailgateway.EmailType;
+
+@Service(Payment.class)
+public class PaymentImpl implements Payment {
+
+ protected CreditCardPayment creditCardPayment;
+ protected EmailGateway emailGateway;
+ protected float processingCharge = 0;
+
+ @Reference
+ public void setCreditCardPayment(CreditCardPayment creditCardPayment) {
+ this.creditCardPayment = creditCardPayment;
+ }
+
+ public void setEmailGateway(EmailGateway emailGateway) {
+ this.emailGateway = emailGateway;
+ }
+
+ @Property
+ public void setProcessingCharge(float processingCharge) {
+ this.processingCharge = processingCharge;
+ }
+
+ public String makePaymentMember(String customerId, float amount) {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa"));
+ PayerType ccOwner = objectFactory.createPayerType();
+ ccOwner.setName(customerId);
+ ccDetails.setCardOwner(ccOwner);
+
+ amount += processingCharge;
+
+ String status = creditCardPayment.authorize(ccDetails, amount);
+
+ scatours.emailgateway.ObjectFactory emailFactory = new scatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java
new file mode 100644
index 0000000000..644519a5e7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 scatours.emailgateway;
+
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..dbf89924cc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,116 @@
+<?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="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..a097d9b7e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?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="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8082/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..896b1ceb48
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="payment"/>
+ <export.java package="scatours.emailgateway"/>
+ <export namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment-context.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment-context.xml
new file mode 100644
index 0000000000..6942649d8a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment-context.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+
+ <sca:service name="Payment"
+ type="payment.Payment"
+ target="Payment"/>
+
+ <bean id="Payment" class="payment.PaymentImpl">
+ <property name="creditCardPayment" ref="creditCardPayment"/>
+ <property name="emailGateway" ref="EmailGateway"/>
+ <property name="processingCharge" ref="processingCharge"/>
+ </bean>
+
+ <bean id="EmailGateway" class="scatours.emailgateway.EmailGatewayImpl">
+ </bean>
+
+ <sca:reference name="creditCardPayment"
+ type="payment.creditcard.CreditCardPayment"/>
+
+ <sca:property name="processingCharge"
+ type="java.lang.Float"/>
+</beans>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?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="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..5e47c9075e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/PaymentTestCase.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.
+ */
+
+package payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+ private static SCANode emailGatewayNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ try {
+ creditCardNode = SCANodeFactory.newInstance().createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/classes"),
+ new SCAContribution("creditcard-test", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/test-classes"));
+ //emailGatewayNode = SCANodeFactory.newInstance().createSCANode("emailgateway.composite",
+ // new SCAContribution("creditcard", "../../shared-contributions/emailgateway-contribution/target/classes"),
+ // new SCAContribution("creditcard-test", "../../shared-contributions/emailgateway-contribution/target/test-classes"));
+ paymentNode = SCANodeFactory.newInstance().createSCANode("payment.composite",
+ new SCAContribution("payment-spring", "./target/classes"),
+ new SCAContribution("payment-spring-test", "./target/test-classes"));
+
+ creditCardNode.start();
+ //emailGatewayNode.start();
+ paymentNode.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient) paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("Fred", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ //emailGatewayNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/client/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/client/PaymentClientImpl.java
new file mode 100644
index 0000000000..556a699ad8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/java/payment/client/PaymentClientImpl.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.
+ */
+
+package payment.client;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..92de8d375b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="payment"/>
+ <import.java package="scatours.emailgateway"/>
+ <import namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/payment.composite
new file mode 100644
index 0000000000..aeb9a3e413
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-annotation-contribution/src/test/resources/payment.composite
@@ -0,0 +1,48 @@
+<?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:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ name="payment">
+
+ <component name="PaymentClient">
+ <implementation.java class="payment.client.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8080/Payment" />
+ </reference>
+ </component>
+
+ <component name="PaymentComponent">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
+ <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
+ </service>
+ <reference name="creditCardPayment">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment"/>
+ </reference>
+ <!--reference name="emailGateway">
+ <binding.ws uri="http://localhost:8082/EmailGateway"/>
+ </reference-->
+ <property name="processingCharge">9.73</property>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/pom.xml
new file mode 100644
index 0000000000..299b989cca
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/pom.xml
@@ -0,0 +1,184 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-payment-spring-contribution</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Spring Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>2.5.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>2.5.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>2.5.5</version>
+ </dependency-->
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.9</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>scatours.emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>scatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/payment/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/payment/PaymentImpl.java
new file mode 100644
index 0000000000..48f829ae0f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/payment/PaymentImpl.java
@@ -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.
+ */
+
+package payment;
+
+import payment.creditcard.CreditCardDetailsType;
+import payment.creditcard.CreditCardPayment;
+import payment.creditcard.CreditCardTypeType;
+import payment.creditcard.ObjectFactory;
+import payment.creditcard.PayerType;
+import scatours.emailgateway.EmailGateway;
+import scatours.emailgateway.EmailType;
+
+public class PaymentImpl implements Payment {
+
+ private CreditCardPayment creditCardPayment;
+ private EmailGateway emailGateway;
+
+ public void setCreditCardPayment(CreditCardPayment creditCardPayment) {
+ this.creditCardPayment = creditCardPayment;
+ }
+
+ public void setEmailGateway(EmailGateway emailGateway) {
+ this.emailGateway = emailGateway;
+ }
+
+ public String makePaymentMember(String customerId, float amount) {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa"));
+ PayerType ccOwner = objectFactory.createPayerType();
+ ccOwner.setName(customerId);
+ ccDetails.setCardOwner(ccOwner);
+
+ String status = creditCardPayment.authorize(ccDetails, amount);
+
+ scatours.emailgateway.ObjectFactory emailFactory = new scatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java
new file mode 100644
index 0000000000..644519a5e7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 scatours.emailgateway;
+
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..dbf89924cc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,116 @@
+<?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="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..a097d9b7e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?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="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8082/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..78a5d851f9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="payment"/>
+ <export namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment-context.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment-context.xml
new file mode 100644
index 0000000000..e786e15d55
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment-context.xml
@@ -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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="Payment" class="payment.PaymentImpl">
+ <property name="creditCardPayment" ref="creditCardPaymentReference"/>
+ <property name="emailGateway" ref="EmailGateway"/>
+ </bean>
+
+ <bean id="EmailGateway" class="scatours.emailgateway.EmailGatewayImpl">
+ </bean>
+
+</beans>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?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="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..8046e8b2cd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/PaymentTestCase.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.
+ */
+
+package payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+ private static SCANode emailGatewayNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ try {
+ creditCardNode = SCANodeFactory.newInstance().createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/classes"),
+ new SCAContribution("creditcard-test", "../../shared-contributions/creditcard-payment-jaxb-contribution/target/test-classes"));
+ emailGatewayNode = SCANodeFactory.newInstance().createSCANode("emailgateway.composite",
+ new SCAContribution("creditcard", "../../shared-contributions/emailgateway-contribution/target/classes"),
+ new SCAContribution("creditcard-test", "../../shared-contributions/emailgateway-contribution/target/test-classes"));
+ paymentNode = SCANodeFactory.newInstance().createSCANode("payment.composite",
+ new SCAContribution("payment-spring", "./target/classes"),
+ new SCAContribution("payment-spring-test", "./target/test-classes"));
+
+ creditCardNode.start();
+ emailGatewayNode.start();
+ paymentNode.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient) paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("Fred", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ emailGatewayNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/client/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/client/PaymentClientImpl.java
new file mode 100644
index 0000000000..556a699ad8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/java/payment/client/PaymentClientImpl.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.
+ */
+
+package payment.client;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..4e61a2f127
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/payment.composite
new file mode 100644
index 0000000000..52deda7a18
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/payment-spring-contribution/src/test/resources/payment.composite
@@ -0,0 +1,47 @@
+<?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:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ name="payment">
+
+ <component name="PaymentClient">
+ <implementation.java class="payment.client.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8080/Payment" />
+ </reference>
+ </component>
+
+ <component name="PaymentComponent">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
+ <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
+ </service>
+ <reference name="creditCardPaymentReference">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment"/>
+ </reference>
+ <!--reference name="emailGateway">
+ <binding.ws uri="http://localhost:8082/EmailGateway"/>
+ </reference-->
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/pom.xml
new file mode 100644
index 0000000000..605a362c31
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/pom.xml
@@ -0,0 +1,51 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.5-SNAPSHOT</version>
+ <!--relativePath>../pom.xml</relativePath-->
+ </parent>
+ <artifactId>tuscany-scatours-chapter-06</artifactId>
+ <packaging>pom</packaging>
+ <name>Apache Tuscany SCA Tours Chapter 06 Examples</name>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>node</module>
+ <module>payment-bpel-contribution</module>
+ <module>payment-spring-contribution</module>
+ <module>payment-spring-annotation-contribution</module>
+ <module>payment-javascript-contribution</module>
+ <module>ui-bpel-contribution</module>
+ <module>ui-spring-contribution</module>
+ </modules>
+ </profile>
+
+ </profiles>
+
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/build.xml
new file mode 100644
index 0000000000..37b6800014
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/build.xml
@@ -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.
+-->
+
+<project name="scatours-chapter-06-ui-bpel-contribution" default="compile">
+
+ <target name="compile">
+ <mkdir dir="target/classes"/>
+ <javac destdir="target/classes" debug="on" source="1.5" target="1.5">
+ <src path="src\main\java"/>
+ <classpath>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="src\main\resources"/>
+ <fileset dir="src\main\resources"/>
+ </copy>
+ <jar destfile="target/scatours-chapter-06-ui-bpel-contribution.jar" basedir="target/classes">
+ <manifest>
+ <attribute name="Main-Class" value="launch.LaunchTutorialAdmin"/>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="package" depends="compile"/>
+
+ <target name="run">
+ <java classname="launch.LaunchTutorialAdmin" fork="true">
+ <classpath>
+ <pathelement location="target/scatours-chapter-06-ui-bpel-contribution.jar"/>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </java>
+ </target>
+
+ <target name="clean">
+ <delete includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ </target>
+
+ <fileset id="tuscany.jars" dir="../../modules">
+ <include name="tuscany-assembly-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-assembly-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-assembly-xsd-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-namespace-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-databinding-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-spi-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-jaxb-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-definitions-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-definitions-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-endpoint-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-extensibility-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-embedded-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-http-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-node-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-jaxws-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-monitor-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-sca-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-sca-api-extension-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-xsd-1.6-SNAPSHOT.jar"/>
+ </fileset>
+ <fileset id="3rdparty.jars" dir="../../lib">
+ <include name="XmlSchema-1.4.2.jar"/>
+ <include name="activation-1.1.jar"/>
+ <include name="asm-all-3.1.jar"/>
+ <include name="axiom-api-1.2.7.jar"/>
+ <include name="axiom-impl-1.2.7.jar"/>
+ <include name="cglib-nodep-2.2.jar"/>
+ <include name="commons-logging-1.1.1.jar"/>
+ <include name="geronimo-activation_1.1_spec-1.0.1.jar"/>
+ <include name="geronimo-javamail_1.4_spec-1.2.jar"/>
+ <include name="geronimo-stax-api_1.0_spec-1.0.1.jar"/>
+ <include name="jaxb-api-2.1.jar"/>
+ <include name="jaxb-impl-2.1.7.jar"/>
+ <include name="jaxen-1.1.1.jar"/>
+ <include name="jaxws-api-2.1.jar"/>
+ <include name="jsr181-api-1.0-MR1.jar"/>
+ <include name="jsr250-api-1.0.jar"/>
+ <include name="stax-api-1.0-2.jar"/>
+ <include name="wstx-asl-3.2.4.jar"/>
+ </fileset>
+
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/pom.xml
new file mode 100644
index 0000000000..448bd8a96f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/pom.xml
@@ -0,0 +1,88 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-chapter-06-ui-bpel-contribution</artifactId>
+ <name>Apache Tuscany SCA Tours Chapter 06 User Interface Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchTutorialAdmin</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b3de1910d1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://scatours">
+ <deployable composite="scatours:scatours"/>
+ <import.java package="scatours.common"/>
+ <import.java package="scatours.currencyconverter"/>
+ <import.java package="scatours.hotel"/>
+ <import.java package="scatours.flight"/>
+ <import.java package="scatours.car"/>
+ <import.java package="scatours.trip"/>
+ <import.java package="scatours.tripbooking"/>
+ <import.java package="scatours.travelcatalog"/>
+ <import.java package="payment.creditcard"/>
+ <import.java package="scatours.emailgateway"/>
+ <import.java package="scatours.shoppingcart"/>
+ <import.java package="scatours"/>
+ <import namespace="http://www.tuscanyscatours.com/Payment"/>
+ <import namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.composite b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.composite
new file mode 100644
index 0000000000..4b5290b910
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.composite
@@ -0,0 +1,178 @@
+<?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"
+ targetNamespace="http://scatours"
+ xmlns:scatours="http://scatours"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ name="scatours">
+
+ <component name="UserInterfaceComponent">
+ <tuscany:implementation.widget location="scatours.html"/>
+ <service name="Widget">
+ <tuscany:binding.http uri="/scatours"/>
+ </service>
+ <reference name="scaToursCatalog" target="SCAToursComponent/SCAToursSearch">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ <reference name="scaToursBooking" target="SCAToursComponent/SCAToursBooking">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ <reference name="scaToursCart" target="SCAToursComponent/SCAToursCart">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="SCAToursComponent">
+ <implementation.java class="scatours.SCAToursImpl"/>
+ <service name="SCAToursSearch">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="SCAToursBooking">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="SCAToursCart">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <reference name="travelCatalogSearch" target="TravelCatalogComponent/TravelCatalogSearch"/>
+ <reference name="tripBooking" target="TripBookingComponent/TripBooking"/>
+ <reference name="shoppingCart" target="ShoppingCartComponent/ShoppingCart"/>
+ </component>
+
+ <component name="TravelCatalogComponent">
+ <implementation.java class="scatours.travelcatalog.TravelCatalogImpl"/>
+ <service name="TravelCatalogSearch"/>
+ <reference name="hotelSearch" target="HotelComponent/Search">
+ <binding.sca/>
+ </reference>
+ <reference name="flightSearch">
+ <interface.java interface="scatours.common.Search"
+ callbackInterface="scatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8080/Flight/Search"/>
+ <callback>
+ <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
+ </callback>
+ </reference>
+ <reference name="carSearch" target="CarComponent/Search">
+ <binding.sca/>
+ </reference>
+ <reference name="tripSearch" target="TripComponent/Search">
+ <binding.sca/>
+ </reference>
+ <reference name="currencyConverter" target="CurrencyConverterComponent">
+ </reference>
+ <property name="quoteCurrencyCode">GBP</property>
+ </component>
+
+ <component name="TripBookingComponent">
+ <implementation.java class="scatours.tripbooking.TripBookingImpl"/>
+ <service name="TripBooking"/>
+ <reference name="hotelBook" target="HotelComponent/Book"/>
+ <reference name="flightBook" target="TripComponent/Book"/>
+ <reference name="carBook" target="CarComponent/Book"/>
+ <reference name="tripBook" target="TripComponent/Book"/>
+ <reference name="shoppingCart" target="ShoppingCartComponent/ShoppingCart"/>
+ </component>
+
+ <component name="HotelComponent">
+ <implementation.java class="scatours.hotel.HotelImpl"/>
+ <service name="Search">
+ <binding.sca/>
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="FlightComponent">
+ <implementation.java class="scatours.flight.FlightImpl"/>
+ <service name="Search">
+ <interface.java interface="scatours.common.Search"
+ callbackInterface="scatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8080/Flight/Search"/>
+ <tuscany:binding.jsonrpc/>
+ <callback>
+ <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
+ </callback>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="CarComponent">
+ <implementation.java class="scatours.car.CarImpl"/>
+ <service name="Search">
+ <binding.sca/>
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="TripComponent">
+ <implementation.java class="scatours.trip.TripImpl"/>
+ <service name="Search">
+ <binding.sca/>
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="CurrencyConverterComponent">
+ <implementation.java class="scatours.currencyconverter.CurrencyConverterImpl"/>
+ <service name="CurrencyConverter">
+ </service>
+ </component>
+
+ <component name="ShoppingCartComponent">
+ <implementation.java class="scatours.shoppingcart.ShoppingCartImpl"/>
+ <service name="ShoppingCart">
+ </service>
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8080/Payment" />
+ </reference>
+ </component>
+
+ <component name="PaymentComponent">
+ <implementation.bpel process="pp:Payment"/>
+ <service name="paymentPartnerLink">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
+ <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
+ </service>
+ <reference name="creditCardPaymentPartnerLink">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment"/>
+ </reference>
+ <reference name="emailGatewayPartnerLink">
+ <binding.ws uri="http://localhost:8082/EmailGateway"/>
+ </reference>
+ </component>
+
+ <component name="CreditCardPayment">
+ <implementation.java class="payment.creditcard.CreditCardPaymentImpl" />
+ <service name="CreditCardPayment">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment" />
+ </service>
+ </component>
+
+ <component name="EmailGateway">
+ <implementation.java class="scatours.emailgateway.EmailGatewayImpl" />
+ <service name="EmailGateway">
+ <binding.ws uri="http://localhost:8082/EmailGateway" />
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.html b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.html
new file mode 100644
index 0000000000..b8e27e87fc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.html
@@ -0,0 +1,391 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>SCA Tours</title>
+
+<link rel="stylesheet" type="text/css" href="style.css" />
+
+<script type="text/javascript" src="scatours.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var scaToursCatalog = new Reference("scaToursCatalog");
+
+ //@Reference
+ var scaToursBooking = new Reference("scaToursBooking");
+
+ //@Reference
+ var scaToursCart = new Reference("scaToursCart");
+
+ //local state
+ var packagedItems;
+ var bespokeItems;
+ var cartId;
+
+ //the constructor for trip leg beans
+ function TripLegType(id,
+ fromLocation,
+ toLocation,
+ fromDate,
+ toDate,
+ noOfPeople) {
+ this.id = id;
+ this.fromLocation = fromLocation;
+ this.toLocation = toLocation;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.noOfPeople = noOfPeople;
+ }
+
+ function getTripLeg(){
+ return new TripLegType(cartId,
+ document.searchForm.fromLocation.value,
+ document.searchForm.toLocation.value,
+ document.searchForm.fromDate.value,
+ document.searchForm.toDate.value,
+ document.searchForm.noOfPeople.value);
+ }
+
+ //the constructor for bespoke trip beans
+ function TripType() {
+ this.id = cartId;
+ this.type = "Bespoke";
+ this.tripItems = new Array();
+ // json databinding can't tolerate having a class hint set as the
+ // databinding transformer is not in the right classloader to load
+ // the class pointed to by the hint
+ //this.javaClass = "scatours.common.TripItem";
+ }
+
+ function getTrip(){
+ return new TripType();
+ }
+
+ // remove class hint from the trip object
+ // can also be used to limit the amount of
+ // data returned to the server
+ function copyTrip(trip){
+ var tripCopy = new TripType();
+
+ tripCopy.id = trip.id;
+ tripCopy.tripId = trip.tripId;
+ tripCopy.type = trip.type;
+ tripCopy.name = trip.name;
+ tripCopy.description = trip.description;
+ tripCopy.location = trip.location;
+ tripCopy.fromDate = trip.fromDate;
+ tripCopy.toDate = trip.toDate;
+ tripCopy.price = trip.price;
+ tripCopy.currency = trip.currency;
+ tripCopy.link = trip.link;
+
+ return tripCopy;
+ }
+
+ function init() {
+ try {
+ newCart();
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+
+ function reset() {
+ document.getElementById('packagedTripItems').innerHTML = "";
+ document.getElementById('bespokeTripItems').innerHTML = "";
+ document.getElementById('cartItems').innerHTML = "";
+ document.getElementById('cartPrice').innerHTML = "";
+ packagedItems = new Array();
+ bespokeItems = new Array();
+ }
+
+ function newCart() {
+ scaToursCart.newCart(newCart_response);
+ reset();
+ }
+
+ function newCart_response(newCartId, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+ cartId = newCartId
+ }
+
+ function searchTravelCatalog() {
+ scaToursCatalog.search(getTripLeg(), search_response);
+ }
+
+ function search_response(items, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+
+ var packagedHTML = '<h3>Packaged Trip Items</h3>';
+ packagedHTML += '<table border="0">';
+ packagedHTML += '<tr>';
+ packagedHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ packagedHTML += '</tr>';
+
+ var bespokeHTML = '<h3>Bespoke Trip Items</h3>';
+ bespokeHTML += '<table border="0">';
+ bespokeHTML += '<tr>';
+ bespokeHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ bespokeHTML += '</tr>';
+
+ for (var i=0; i<items.length; i++) {
+ if (items[i].type == "Trip") {
+ packagedHTML += '<tr>';
+ packagedHTML += '<td><input onClick="processPackagedSelection()" name="packagedTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
+ packagedHTML += '<td>' + items[i].name + '</td>';
+ packagedHTML += '<td>' + items[i].description + '</td>';
+ packagedHTML += '<td>' + items[i].location + '</td>';
+ packagedHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
+ packagedHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
+ packagedHTML += '</tr>';
+ packagedItems.push(items[i]);
+ } else {
+ bespokeHTML += '<tr>';
+ bespokeHTML += '<td><input onClick="processBespokeSelection()" name="bespokeTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
+ bespokeHTML += '<td>' + items[i].name + '</td>';
+ bespokeHTML += '<td>' + items[i].description + '</td>';
+ bespokeHTML += '<td>' + items[i].location + '</td>';
+ bespokeHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
+ bespokeHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
+ bespokeHTML += '</tr>';
+ bespokeItems.push(items[i]);
+ }
+ }
+
+ packagedHTML += '</table>';
+ packagedHTML += '<input type="button" onClick="bookPackagedTrip()" value="Book Packaged Trip">';
+
+ bespokeHTML += '<tr><td/><td/><td>Total Price</td><td/><td/><td><div id="bespokeTripPrice"></div> </td></tr>';
+ bespokeHTML += '</table>';
+ bespokeHTML += '<input type="button" onClick="bookBespokeTrip()" value="Book Bespoke Trip">';
+
+ if (packagedItems.length > 0){
+ document.getElementById('packagedTripItems').innerHTML = packagedHTML;
+ }
+
+ if (bespokeItems.length > 0){
+ document.getElementById('bespokeTripItems').innerHTML = bespokeHTML;
+ }
+ }
+
+ function processPackagedSelection() {
+ // do nothing at the moment
+ }
+
+ function processBespokeSelection() {
+ // calculate total price
+ var items = document.getElementsByName("bespokeTripItemSelection");
+ var totalPrice = 0.0;
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ totalPrice = totalPrice + bespokeItems[i].price;
+ }
+ }
+ document.getElementById('bespokeTripPrice').innerHTML = totalPrice + ' ' + bespokeItems[0]. currency;
+ }
+
+ function bookPackagedTrip() {
+ // find first selected trip item
+ var trip = null;
+ var items = document.getElementsByName("packagedTripItemSelection");
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ trip = copyTrip(packagedItems[i]);
+ break;
+ }
+ }
+
+ if (trip != null) {
+ // book trip
+ scaToursBooking.bookTrip(cartId, trip);
+
+ // reset the display
+ reset();
+
+ // re-populate the cart with all entries
+ getCartTrips();
+ } else {
+ alert ("Please select a trip")
+ }
+ }
+
+ function bookBespokeTrip() {
+ // create a trip object
+ var trip = getTrip();
+
+ // add selected trip items to trip
+ var items = document.getElementsByName("bespokeTripItemSelection");
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ trip.tripItems.push(copyTrip(bespokeItems[i]));
+ }
+ }
+
+ if (trip.tripItems.length > 0) {
+ // book trip
+ scaToursBooking.bookTrip(cartId, trip);
+
+ // reset the display
+ reset();
+
+ // re-populate the cart with all entries
+ getCartTrips();
+ } else {
+ alert ("Please select some trip items!")
+ }
+ }
+
+ function getCartTrips() {
+ scaToursCart.getTrips(cartId, getCartTrips_response);
+ }
+
+ function getCartTrips_response(trips, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+ var itemsHTML = '';
+ var totalPrice = 0.0;
+
+ for (var x=0; x<trips.length; x++){
+ itemsHTML += '<h3>Trip - ' + trips[x].id + '</h3>';
+ itemsHTML += '<table border="0">';
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>Booking Ref</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ itemsHTML += '</tr>';
+
+ if (trips[x].type == "Trip") {
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>' + trips[x].bookingCode + '</td>';
+ itemsHTML += '<td>' + trips[x].name + '</td>';
+ itemsHTML += '<td>' + trips[x].description + '</td>';
+ itemsHTML += '<td>' + trips[x].location + '</td>';
+ itemsHTML += '<td>' + trips[x].fromDate + ' - ' + trips[x].toDate +'</td>';
+ itemsHTML += '<td>' + trips[x].price + ' ' + trips[x].currency + '</td>';
+ itemsHTML += '</tr>';
+ totalPrice = totalPrice + trips[x].price;
+
+ } else {
+ var tripItems = trips[x].tripItems;
+
+ for (var i=0; i<tripItems.length; i++) {
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>' + tripItems[i].bookingCode + '</td>';
+ itemsHTML += '<td>' + tripItems[i].name + '</td>';
+ itemsHTML += '<td>' + tripItems[i].description + '</td>';
+ itemsHTML += '<td>' + tripItems[i].location + '</td>';
+ itemsHTML += '<td>' + tripItems[i].fromDate + ' - ' + tripItems[i].toDate +'</td>';
+ itemsHTML += '<td>' + tripItems[i].price + ' ' + tripItems[i].currency + '</td>';
+ itemsHTML += '</tr>';
+ totalPrice = totalPrice + tripItems[i].price;
+ }
+ }
+
+ itemsHTML += '</table>';
+ }
+
+ document.getElementById('cartItems').innerHTML = itemsHTML;
+ document.getElementById('cartPrice').innerHTML = totalPrice + ' ' + trips[0].currency;
+ }
+
+ function checkout() {
+ scaToursCart.checkout(cartId);
+
+ document.getElementById('packagedTripItems').innerHTML = "";
+ document.getElementById('bespokeTripItems').innerHTML = "";
+ document.getElementById('cartItems').innerHTML = "Thank you for shopping with SCA Tours";
+ document.getElementById('cartPrice').innerHTML = "";
+ searchResponseItems = null;
+ tripItems = null;
+ }
+
+ function purchase() {
+ }
+
+</script>
+
+</head>
+
+<body onload="init()" background="">
+ <img src="scatours.png" border="0" />
+ <div id="scatours">
+ <form name="searchForm">
+ <h3>Search for trips, hotels, flights and cars</h3>
+ <br/>
+ <table border="0">
+ <tr>
+ <td>From Location:</td>
+ <td><input type="text" name="fromLocation" value="LGW"></td>
+ <td>To Location:</td>
+ <td><input type="text" name="toLocation" value="FLR"></td>
+ </tr>
+ <tr>
+ <td>Start Date:</td>
+ <td><input type="text" name="fromDate" value="06/12/09"></td>
+ <td>End Date:</td>
+ <td><input type="text" name="toDate" value="13/12/09"></td>
+ </tr>
+ <tr>
+ <td>Number of people:</td>
+ <td><select name="noOfPeople">
+ <option>1
+ <option selected>2
+ <option>3
+ <option>4
+ </select></td>
+ <td/>
+ <td/>
+ </tr>
+ </table>
+ <br/>
+ <input type="button" onClick="searchTravelCatalog()" value="Search">
+ </form>
+ <form name="packagedTripForm">
+ <div id="packagedTripItems"></div>
+ </form>
+ <form name="bespokeTripForm">
+ <div id="bespokeTripItems"></div>
+ </form>
+ <form name="cartForm">
+ <h3>Shopping Cart</h3>
+ <div id="cartItems"></div>
+ <br/>
+ Total Price: <div id="cartPrice"></div>
+ <br/>
+ <input type="button" onClick="checkout()" value="Checkout">
+ </form>
+ </div>
+
+</body>
+</html>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.odg b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.odg
new file mode 100644
index 0000000000..8ca8fbf133
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.odg
Binary files differ
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.png b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.png
new file mode 100644
index 0000000000..f68cd84704
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/scatours.png
Binary files differ
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/style.css b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/style.css
new file mode 100644
index 0000000000..6e17c2747b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-bpel-contribution/src/main/resources/style.css
@@ -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.
+ */
+
+
+
+/*******************************************/
+
+p,table,li,h1,h2,h3
+{
+font-family: verdana, arial, 'sans serif';
+}
+
+p, h1, h2, h3, table, li, hr
+{
+margin-left: 10pt;
+}
+
+table
+{
+border-color: black;
+border-collapse: separate;
+border-spacing: 0px 1px;
+
+margin-right: 10pt;
+margin-left: 10pt;
+width: 800px;
+}
+
+.sourceDetailsTable
+{
+width: 600px;
+}
+
+tr, td
+{
+margin-left: 0pt;
+margin-right: 0pt;
+padding-left: 10pt;
+font-size: 90%;
+}
+
+p,li,th
+{
+font-size: 90%;
+margin-left: 10pt;
+}
+
+pre
+{
+margin-left: 10pt;
+}
+
+body
+{
+#ffffff;
+}
+
+h1,h2,h3,hr
+{
+color: firebrick;
+}
+
+a:link {COLOR: firebrick;}
+a:visited {COLOR: firebrick;}
+a:active {COLOR: navy;}
+
+.link
+{
+COLOR: firebrick;
+text-decoration: underline;
+}
+
+.clickable
+{
+cursor: pointer
+}
+
+.unread_title
+{
+font-weight: bold;
+}
+
+.read_title
+{
+font-weight: normal;
+}
+
+.summary
+{
+color: DimGrey;
+}
+
+.hidden
+{
+display: none;
+}
+
+.source_name
+{
+width: 600px;
+}
+
+.alert_text
+{
+width: 600px;
+}
+
+.alert_data
+{
+margin-left: 10px;
+width: 800px;
+height: 800px;
+}
+
+.source_0
+{
+background-color: LightGreen;
+}
+
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/build.xml
new file mode 100644
index 0000000000..68b3a3adf9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/build.xml
@@ -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.
+-->
+
+<project name="scatours-ui-spring-contribution" default="compile">
+
+ <target name="compile">
+ <mkdir dir="target/classes"/>
+ <javac destdir="target/classes" debug="on" source="1.5" target="1.5">
+ <src path="src\main\java"/>
+ <classpath>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </javac>
+ <copy todir="target/classes">
+ <fileset dir="src\main\resources"/>
+ <fileset dir="src\main\resources"/>
+ </copy>
+ <jar destfile="target/scatours-ui-spring-contribution.jar" basedir="target/classes">
+ <manifest>
+ <attribute name="Main-Class" value="launch.LaunchTutorialAdmin"/>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="package" depends="compile"/>
+
+ <target name="run">
+ <java classname="launch.LaunchTutorialAdmin" fork="true">
+ <classpath>
+ <pathelement location="target/scatours-ui-spring-contribution.jar"/>
+ <fileset refid="tuscany.jars"/>
+ <fileset refid="3rdparty.jars"/>
+ </classpath>
+ </java>
+ </target>
+
+ <target name="clean">
+ <delete includeemptydirs="true">
+ <fileset dir="target"/>
+ </delete>
+ </target>
+
+ <fileset id="tuscany.jars" dir="../../modules">
+ <include name="tuscany-assembly-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-assembly-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-assembly-xsd-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-binding-sca-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-namespace-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-contribution-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-databinding-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-core-spi-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-databinding-jaxb-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-definitions-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-definitions-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-endpoint-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-extensibility-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-embedded-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-host-http-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-implementation-node-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-jaxws-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-interface-java-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-monitor-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-node-impl-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-policy-xml-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-sca-api-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-sca-api-extension-1.6-SNAPSHOT.jar"/>
+ <include name="tuscany-xsd-1.6-SNAPSHOT.jar"/>
+ </fileset>
+ <fileset id="3rdparty.jars" dir="../../lib">
+ <include name="XmlSchema-1.4.2.jar"/>
+ <include name="activation-1.1.jar"/>
+ <include name="asm-all-3.1.jar"/>
+ <include name="axiom-api-1.2.7.jar"/>
+ <include name="axiom-impl-1.2.7.jar"/>
+ <include name="cglib-nodep-2.2.jar"/>
+ <include name="commons-logging-1.1.1.jar"/>
+ <include name="geronimo-activation_1.1_spec-1.0.1.jar"/>
+ <include name="geronimo-javamail_1.4_spec-1.2.jar"/>
+ <include name="geronimo-stax-api_1.0_spec-1.0.1.jar"/>
+ <include name="jaxb-api-2.1.jar"/>
+ <include name="jaxb-impl-2.1.7.jar"/>
+ <include name="jaxen-1.1.1.jar"/>
+ <include name="jaxws-api-2.1.jar"/>
+ <include name="jsr181-api-1.0-MR1.jar"/>
+ <include name="jsr250-api-1.0.jar"/>
+ <include name="stax-api-1.0-2.jar"/>
+ <include name="wstx-asl-3.2.4.jar"/>
+ </fileset>
+
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/pom.xml
new file mode 100644
index 0000000000..42df0ab469
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/pom.xml
@@ -0,0 +1,88 @@
+<?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>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <!--relativePath>../../pom.xml</relativePath-->
+ </parent>
+ <artifactId>scatours-ui-spring-contribution</artifactId>
+ <name>Apache Tuscany SCA Tours User Interface Spring Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>launch.LaunchTutorialAdmin</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b3de1910d1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -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.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://scatours">
+ <deployable composite="scatours:scatours"/>
+ <import.java package="scatours.common"/>
+ <import.java package="scatours.currencyconverter"/>
+ <import.java package="scatours.hotel"/>
+ <import.java package="scatours.flight"/>
+ <import.java package="scatours.car"/>
+ <import.java package="scatours.trip"/>
+ <import.java package="scatours.tripbooking"/>
+ <import.java package="scatours.travelcatalog"/>
+ <import.java package="payment.creditcard"/>
+ <import.java package="scatours.emailgateway"/>
+ <import.java package="scatours.shoppingcart"/>
+ <import.java package="scatours"/>
+ <import namespace="http://www.tuscanyscatours.com/Payment"/>
+ <import namespace="http://www.tuscanyscatours.com/Payment/"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.composite b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.composite
new file mode 100644
index 0000000000..9b21c2a9f2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.composite
@@ -0,0 +1,169 @@
+<?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"
+ targetNamespace="http://scatours"
+ xmlns:scatours="http://scatours"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ name="scatours">
+
+ <component name="UserInterfaceComponent">
+ <tuscany:implementation.widget location="scatours.html"/>
+ <service name="Widget">
+ <tuscany:binding.http uri="/scatours"/>
+ </service>
+ <reference name="scaToursCatalog" target="SCAToursComponent/SCAToursSearch">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ <reference name="scaToursBooking" target="SCAToursComponent/SCAToursBooking">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ <reference name="scaToursCart" target="SCAToursComponent/SCAToursCart">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="SCAToursComponent">
+ <implementation.java class="scatours.SCAToursImpl"/>
+ <service name="SCAToursSearch">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="SCAToursBooking">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="SCAToursCart">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <reference name="travelCatalogSearch" target="TravelCatalogComponent/TravelCatalogSearch"/>
+ <reference name="tripBooking" target="TripBookingComponent/TripBooking"/>
+ <reference name="shoppingCart" target="ShoppingCartComponent/ShoppingCart"/>
+ </component>
+
+ <component name="TravelCatalogComponent">
+ <implementation.java class="scatours.travelcatalog.TravelCatalogImpl"/>
+ <service name="TravelCatalogSearch"/>
+ <reference name="hotelSearch" target="HotelComponent/Search">
+ <binding.sca/>
+ </reference>
+ <reference name="flightSearch">
+ <interface.java interface="scatours.common.Search"
+ callbackInterface="scatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8080/Flight/Search"/>
+ <callback>
+ <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
+ </callback>
+ </reference>
+ <reference name="carSearch" target="CarComponent/Search">
+ <binding.sca/>
+ </reference>
+ <reference name="tripSearch" target="TripComponent/Search">
+ <binding.sca/>
+ </reference>
+ <reference name="currencyConverter" target="CurrencyConverterComponent">
+ </reference>
+ <property name="quoteCurrencyCode">GBP</property>
+ </component>
+
+ <component name="TripBookingComponent">
+ <implementation.java class="scatours.tripbooking.TripBookingImpl"/>
+ <service name="TripBooking"/>
+ <reference name="hotelBook" target="HotelComponent/Book"/>
+ <reference name="flightBook" target="TripComponent/Book"/>
+ <reference name="carBook" target="CarComponent/Book"/>
+ <reference name="tripBook" target="TripComponent/Book"/>
+ <reference name="shoppingCart" target="ShoppingCartComponent/ShoppingCart"/>
+ </component>
+
+ <component name="HotelComponent">
+ <implementation.java class="scatours.hotel.HotelImpl"/>
+ <service name="Search">
+ <binding.sca/>
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="FlightComponent">
+ <implementation.java class="scatours.flight.FlightImpl"/>
+ <service name="Search">
+ <interface.java interface="scatours.common.Search"
+ callbackInterface="scatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8080/Flight/Search"/>
+ <tuscany:binding.jsonrpc/>
+ <callback>
+ <binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
+ </callback>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="CarComponent">
+ <implementation.java class="scatours.car.CarImpl"/>
+ <service name="Search">
+ <binding.sca/>
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="TripComponent">
+ <implementation.java class="scatours.trip.TripImpl"/>
+ <service name="Search">
+ <binding.sca/>
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="CurrencyConverterComponent">
+ <implementation.java class="scatours.currencyconverter.CurrencyConverterImpl"/>
+ <service name="CurrencyConverter">
+ </service>
+ </component>
+
+ <component name="ShoppingCartComponent">
+ <implementation.java class="scatours.shoppingcart.ShoppingCartImpl"/>
+ <service name="ShoppingCart">
+ </service>
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8080/Payment" />
+ </reference>
+ </component>
+
+ <component name="PaymentComponent">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
+ <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
+ </service>
+ <reference name="creditCardPayment">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment"/>
+ </reference>
+ <property name="processingCharge">9.73</property>
+ </component>
+
+ <component name="CreditCardPayment">
+ <implementation.java class="payment.creditcard.CreditCardPaymentImpl" />
+ <service name="CreditCardPayment">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment" />
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.html b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.html
new file mode 100644
index 0000000000..b8e27e87fc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.html
@@ -0,0 +1,391 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>SCA Tours</title>
+
+<link rel="stylesheet" type="text/css" href="style.css" />
+
+<script type="text/javascript" src="scatours.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var scaToursCatalog = new Reference("scaToursCatalog");
+
+ //@Reference
+ var scaToursBooking = new Reference("scaToursBooking");
+
+ //@Reference
+ var scaToursCart = new Reference("scaToursCart");
+
+ //local state
+ var packagedItems;
+ var bespokeItems;
+ var cartId;
+
+ //the constructor for trip leg beans
+ function TripLegType(id,
+ fromLocation,
+ toLocation,
+ fromDate,
+ toDate,
+ noOfPeople) {
+ this.id = id;
+ this.fromLocation = fromLocation;
+ this.toLocation = toLocation;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.noOfPeople = noOfPeople;
+ }
+
+ function getTripLeg(){
+ return new TripLegType(cartId,
+ document.searchForm.fromLocation.value,
+ document.searchForm.toLocation.value,
+ document.searchForm.fromDate.value,
+ document.searchForm.toDate.value,
+ document.searchForm.noOfPeople.value);
+ }
+
+ //the constructor for bespoke trip beans
+ function TripType() {
+ this.id = cartId;
+ this.type = "Bespoke";
+ this.tripItems = new Array();
+ // json databinding can't tolerate having a class hint set as the
+ // databinding transformer is not in the right classloader to load
+ // the class pointed to by the hint
+ //this.javaClass = "scatours.common.TripItem";
+ }
+
+ function getTrip(){
+ return new TripType();
+ }
+
+ // remove class hint from the trip object
+ // can also be used to limit the amount of
+ // data returned to the server
+ function copyTrip(trip){
+ var tripCopy = new TripType();
+
+ tripCopy.id = trip.id;
+ tripCopy.tripId = trip.tripId;
+ tripCopy.type = trip.type;
+ tripCopy.name = trip.name;
+ tripCopy.description = trip.description;
+ tripCopy.location = trip.location;
+ tripCopy.fromDate = trip.fromDate;
+ tripCopy.toDate = trip.toDate;
+ tripCopy.price = trip.price;
+ tripCopy.currency = trip.currency;
+ tripCopy.link = trip.link;
+
+ return tripCopy;
+ }
+
+ function init() {
+ try {
+ newCart();
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+
+ function reset() {
+ document.getElementById('packagedTripItems').innerHTML = "";
+ document.getElementById('bespokeTripItems').innerHTML = "";
+ document.getElementById('cartItems').innerHTML = "";
+ document.getElementById('cartPrice').innerHTML = "";
+ packagedItems = new Array();
+ bespokeItems = new Array();
+ }
+
+ function newCart() {
+ scaToursCart.newCart(newCart_response);
+ reset();
+ }
+
+ function newCart_response(newCartId, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+ cartId = newCartId
+ }
+
+ function searchTravelCatalog() {
+ scaToursCatalog.search(getTripLeg(), search_response);
+ }
+
+ function search_response(items, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+
+ var packagedHTML = '<h3>Packaged Trip Items</h3>';
+ packagedHTML += '<table border="0">';
+ packagedHTML += '<tr>';
+ packagedHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ packagedHTML += '</tr>';
+
+ var bespokeHTML = '<h3>Bespoke Trip Items</h3>';
+ bespokeHTML += '<table border="0">';
+ bespokeHTML += '<tr>';
+ bespokeHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ bespokeHTML += '</tr>';
+
+ for (var i=0; i<items.length; i++) {
+ if (items[i].type == "Trip") {
+ packagedHTML += '<tr>';
+ packagedHTML += '<td><input onClick="processPackagedSelection()" name="packagedTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
+ packagedHTML += '<td>' + items[i].name + '</td>';
+ packagedHTML += '<td>' + items[i].description + '</td>';
+ packagedHTML += '<td>' + items[i].location + '</td>';
+ packagedHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
+ packagedHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
+ packagedHTML += '</tr>';
+ packagedItems.push(items[i]);
+ } else {
+ bespokeHTML += '<tr>';
+ bespokeHTML += '<td><input onClick="processBespokeSelection()" name="bespokeTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
+ bespokeHTML += '<td>' + items[i].name + '</td>';
+ bespokeHTML += '<td>' + items[i].description + '</td>';
+ bespokeHTML += '<td>' + items[i].location + '</td>';
+ bespokeHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
+ bespokeHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
+ bespokeHTML += '</tr>';
+ bespokeItems.push(items[i]);
+ }
+ }
+
+ packagedHTML += '</table>';
+ packagedHTML += '<input type="button" onClick="bookPackagedTrip()" value="Book Packaged Trip">';
+
+ bespokeHTML += '<tr><td/><td/><td>Total Price</td><td/><td/><td><div id="bespokeTripPrice"></div> </td></tr>';
+ bespokeHTML += '</table>';
+ bespokeHTML += '<input type="button" onClick="bookBespokeTrip()" value="Book Bespoke Trip">';
+
+ if (packagedItems.length > 0){
+ document.getElementById('packagedTripItems').innerHTML = packagedHTML;
+ }
+
+ if (bespokeItems.length > 0){
+ document.getElementById('bespokeTripItems').innerHTML = bespokeHTML;
+ }
+ }
+
+ function processPackagedSelection() {
+ // do nothing at the moment
+ }
+
+ function processBespokeSelection() {
+ // calculate total price
+ var items = document.getElementsByName("bespokeTripItemSelection");
+ var totalPrice = 0.0;
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ totalPrice = totalPrice + bespokeItems[i].price;
+ }
+ }
+ document.getElementById('bespokeTripPrice').innerHTML = totalPrice + ' ' + bespokeItems[0]. currency;
+ }
+
+ function bookPackagedTrip() {
+ // find first selected trip item
+ var trip = null;
+ var items = document.getElementsByName("packagedTripItemSelection");
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ trip = copyTrip(packagedItems[i]);
+ break;
+ }
+ }
+
+ if (trip != null) {
+ // book trip
+ scaToursBooking.bookTrip(cartId, trip);
+
+ // reset the display
+ reset();
+
+ // re-populate the cart with all entries
+ getCartTrips();
+ } else {
+ alert ("Please select a trip")
+ }
+ }
+
+ function bookBespokeTrip() {
+ // create a trip object
+ var trip = getTrip();
+
+ // add selected trip items to trip
+ var items = document.getElementsByName("bespokeTripItemSelection");
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ trip.tripItems.push(copyTrip(bespokeItems[i]));
+ }
+ }
+
+ if (trip.tripItems.length > 0) {
+ // book trip
+ scaToursBooking.bookTrip(cartId, trip);
+
+ // reset the display
+ reset();
+
+ // re-populate the cart with all entries
+ getCartTrips();
+ } else {
+ alert ("Please select some trip items!")
+ }
+ }
+
+ function getCartTrips() {
+ scaToursCart.getTrips(cartId, getCartTrips_response);
+ }
+
+ function getCartTrips_response(trips, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+ var itemsHTML = '';
+ var totalPrice = 0.0;
+
+ for (var x=0; x<trips.length; x++){
+ itemsHTML += '<h3>Trip - ' + trips[x].id + '</h3>';
+ itemsHTML += '<table border="0">';
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>Booking Ref</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ itemsHTML += '</tr>';
+
+ if (trips[x].type == "Trip") {
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>' + trips[x].bookingCode + '</td>';
+ itemsHTML += '<td>' + trips[x].name + '</td>';
+ itemsHTML += '<td>' + trips[x].description + '</td>';
+ itemsHTML += '<td>' + trips[x].location + '</td>';
+ itemsHTML += '<td>' + trips[x].fromDate + ' - ' + trips[x].toDate +'</td>';
+ itemsHTML += '<td>' + trips[x].price + ' ' + trips[x].currency + '</td>';
+ itemsHTML += '</tr>';
+ totalPrice = totalPrice + trips[x].price;
+
+ } else {
+ var tripItems = trips[x].tripItems;
+
+ for (var i=0; i<tripItems.length; i++) {
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>' + tripItems[i].bookingCode + '</td>';
+ itemsHTML += '<td>' + tripItems[i].name + '</td>';
+ itemsHTML += '<td>' + tripItems[i].description + '</td>';
+ itemsHTML += '<td>' + tripItems[i].location + '</td>';
+ itemsHTML += '<td>' + tripItems[i].fromDate + ' - ' + tripItems[i].toDate +'</td>';
+ itemsHTML += '<td>' + tripItems[i].price + ' ' + tripItems[i].currency + '</td>';
+ itemsHTML += '</tr>';
+ totalPrice = totalPrice + tripItems[i].price;
+ }
+ }
+
+ itemsHTML += '</table>';
+ }
+
+ document.getElementById('cartItems').innerHTML = itemsHTML;
+ document.getElementById('cartPrice').innerHTML = totalPrice + ' ' + trips[0].currency;
+ }
+
+ function checkout() {
+ scaToursCart.checkout(cartId);
+
+ document.getElementById('packagedTripItems').innerHTML = "";
+ document.getElementById('bespokeTripItems').innerHTML = "";
+ document.getElementById('cartItems').innerHTML = "Thank you for shopping with SCA Tours";
+ document.getElementById('cartPrice').innerHTML = "";
+ searchResponseItems = null;
+ tripItems = null;
+ }
+
+ function purchase() {
+ }
+
+</script>
+
+</head>
+
+<body onload="init()" background="">
+ <img src="scatours.png" border="0" />
+ <div id="scatours">
+ <form name="searchForm">
+ <h3>Search for trips, hotels, flights and cars</h3>
+ <br/>
+ <table border="0">
+ <tr>
+ <td>From Location:</td>
+ <td><input type="text" name="fromLocation" value="LGW"></td>
+ <td>To Location:</td>
+ <td><input type="text" name="toLocation" value="FLR"></td>
+ </tr>
+ <tr>
+ <td>Start Date:</td>
+ <td><input type="text" name="fromDate" value="06/12/09"></td>
+ <td>End Date:</td>
+ <td><input type="text" name="toDate" value="13/12/09"></td>
+ </tr>
+ <tr>
+ <td>Number of people:</td>
+ <td><select name="noOfPeople">
+ <option>1
+ <option selected>2
+ <option>3
+ <option>4
+ </select></td>
+ <td/>
+ <td/>
+ </tr>
+ </table>
+ <br/>
+ <input type="button" onClick="searchTravelCatalog()" value="Search">
+ </form>
+ <form name="packagedTripForm">
+ <div id="packagedTripItems"></div>
+ </form>
+ <form name="bespokeTripForm">
+ <div id="bespokeTripItems"></div>
+ </form>
+ <form name="cartForm">
+ <h3>Shopping Cart</h3>
+ <div id="cartItems"></div>
+ <br/>
+ Total Price: <div id="cartPrice"></div>
+ <br/>
+ <input type="button" onClick="checkout()" value="Checkout">
+ </form>
+ </div>
+
+</body>
+</html>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.odg b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.odg
new file mode 100644
index 0000000000..8ca8fbf133
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.odg
Binary files differ
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.png b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.png
new file mode 100644
index 0000000000..f68cd84704
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/scatours.png
Binary files differ
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/style.css b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/style.css
new file mode 100644
index 0000000000..6e17c2747b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contrib/chapter-06/ui-spring-contribution/src/main/resources/style.css
@@ -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.
+ */
+
+
+
+/*******************************************/
+
+p,table,li,h1,h2,h3
+{
+font-family: verdana, arial, 'sans serif';
+}
+
+p, h1, h2, h3, table, li, hr
+{
+margin-left: 10pt;
+}
+
+table
+{
+border-color: black;
+border-collapse: separate;
+border-spacing: 0px 1px;
+
+margin-right: 10pt;
+margin-left: 10pt;
+width: 800px;
+}
+
+.sourceDetailsTable
+{
+width: 600px;
+}
+
+tr, td
+{
+margin-left: 0pt;
+margin-right: 0pt;
+padding-left: 10pt;
+font-size: 90%;
+}
+
+p,li,th
+{
+font-size: 90%;
+margin-left: 10pt;
+}
+
+pre
+{
+margin-left: 10pt;
+}
+
+body
+{
+#ffffff;
+}
+
+h1,h2,h3,hr
+{
+color: firebrick;
+}
+
+a:link {COLOR: firebrick;}
+a:visited {COLOR: firebrick;}
+a:active {COLOR: navy;}
+
+.link
+{
+COLOR: firebrick;
+text-decoration: underline;
+}
+
+.clickable
+{
+cursor: pointer
+}
+
+.unread_title
+{
+font-weight: bold;
+}
+
+.read_title
+{
+font-weight: normal;
+}
+
+.summary
+{
+color: DimGrey;
+}
+
+.hidden
+{
+display: none;
+}
+
+.source_name
+{
+width: 600px;
+}
+
+.alert_text
+{
+width: 600px;
+}
+
+.alert_data
+{
+margin-left: 10px;
+width: 800px;
+height: 800px;
+}
+
+.source_0
+{
+background-color: LightGreen;
+}
+