summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-05-27 10:12:24 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-05-27 10:12:24 +0000
commit46576bda96cf80886ed8bd811e79dee9b1e63f4c (patch)
treeb8ac5e49c7c999f9a03425cab3e844a0a24e6d6a /sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy
parentd3ab2b28493cecc4092814c3fd6873d74d1018d8 (diff)
Move the travel sample tutorial from 2.x trunk to contrib as its not in the build, doesn't build, and no one is actively working on it. (and even if they were, i wonder if this should be released seperately like the 1.x version and so not in the trunk tree anyway
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@948750 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy')
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/build.xml40
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/pom.xml189
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java70
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java57
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java39
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java113
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java32
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java77
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl118
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml33
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml35
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite45
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java70
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java37
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite31
19 files changed, 1206 insertions, 0 deletions
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/build.xml b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/build.xml
new file mode 100644
index 0000000000..db0e41b22f
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/build.xml
@@ -0,0 +1,40 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-payment-spring-policy" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/pom.xml b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/pom.xml
new file mode 100644
index 0000000000..a7eafd0235
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/pom.xml
@@ -0,0 +1,189 @@
+<?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>scatours</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>2.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-spring-policy</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Spring Policy Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!--
+ https://issues.apache.org/jira/browse/TUSCANY-3069
+ -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring-sca</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <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.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.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>com.tuscanyscatours.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>com.tuscanyscatours.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-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java
new file mode 100644
index 0000000000..3b72f81b33
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 com.tuscanyscatours.customer;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer data
+ */
+public class Customer {
+ private String id;
+ private String email;
+ private String name;
+
+ private CreditCardDetailsType creditCard;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public CreditCardDetailsType getCreditCard() {
+ return creditCard;
+ }
+
+ public void setCreditCard(CreditCardDetailsType creditCard) {
+ this.creditCard = creditCard;
+ }
+
+ public String toString() {
+ return "id: " + id + " name: " + name + " e-mail: " + email;
+ }
+
+}
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
new file mode 100644
index 0000000000..b08f76e0fa
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+public class CustomerNotFoundException extends Exception {
+ private static final long serialVersionUID = -129752837478357452L;
+
+ /**
+ *
+ */
+ public CustomerNotFoundException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public CustomerNotFoundException(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public CustomerNotFoundException(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public CustomerNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
new file mode 100644
index 0000000000..706167d567
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import java.util.Collection;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer registry interface
+ */
+public interface CustomerRegistry {
+ Customer createCustomer(String name, String email, CreditCardDetailsType creditCard);
+
+ boolean updateCustomer(Customer customer);
+
+ Customer getCustomer(String id) throws CustomerNotFoundException;
+
+ Collection<Customer> getAllCustomers();
+
+ boolean deleteCustomer(String id);
+}
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
new file mode 100644
index 0000000000..147526dfd3
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.oasisopen.sca.annotation.Destroy;
+import org.oasisopen.sca.annotation.EagerInit;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ * An in-memory customer registry implementation
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+@EagerInit
+public class CustomerRegistryImpl implements CustomerRegistry {
+ private volatile static int idGenerator = 0;
+ private Map<String, Customer> customers = new HashMap<String, Customer>();
+
+ @Init
+ public void init() {
+ // Load the customers
+ ObjectFactory factory = new ObjectFactory();
+ CreditCardDetailsType cc = factory.createCreditCardDetailsType();
+ PayerType john = factory.createPayerType();
+ john.setName("John Smith");
+ cc.setCardOwner(john);
+ cc.setCreditCardNumber("1111-2222-3333-4444");
+ cc.setCreditCardType(CreditCardTypeType.VISA);
+ cc.setCVV2("1234");
+ cc.setExpMonth(1);
+ cc.setExpYear(2012);
+ createCustomer("John Smith", "john@xyz.com", cc);
+ }
+
+ @Destroy
+ public void destroy() {
+ // Save the customers
+ }
+
+ public Customer createCustomer(String name, String email, CreditCardDetailsType creditCard) {
+ Customer customer = new Customer();
+ customer.setId("c-" + idGenerator++);
+ customer.setName(name);
+ customer.setEmail(email);
+ customer.setCreditCard(creditCard);
+ customers.put(customer.getId(), customer);
+ return customer;
+ }
+
+ public boolean deleteCustomer(String id) {
+ return customers.remove(id) != null;
+ }
+
+ public Collection<Customer> getAllCustomers() {
+ return customers.values();
+ }
+
+ public Customer getCustomer(String id) throws CustomerNotFoundException {
+ Customer customer = customers.get(id);
+
+ if (customer == null) {
+ throw new CustomerNotFoundException("Customer " + id + " not found");
+ }
+
+ return customer;
+ }
+
+ public boolean updateCustomer(Customer customer) {
+ Customer current = null;
+ try {
+ current = getCustomer(customer.getId());
+ } catch (Exception ex) {
+ return false;
+ }
+
+ current.setEmail(customer.getEmail());
+ current.setName(customer.getName());
+ current.setCreditCard(customer.getCreditCard());
+ return true;
+ }
+
+}
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..5eb825cb85
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+
+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-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
new file mode 100644
index 0000000000..a35f761dc7
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.impl;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+public class PaymentImpl implements Payment {
+
+ private CreditCardPayment creditCardPayment;
+ private CustomerRegistry customerRegistry;
+ private EmailGateway emailGateway;
+ private float transactionFee;
+
+ public void setCreditCardPayment(CreditCardPayment creditCardPayment) {
+ this.creditCardPayment = creditCardPayment;
+ }
+
+ public void setCustomerRegistry(CustomerRegistry customerRegistry) {
+ this.customerRegistry = customerRegistry;
+ }
+
+ public void setEmailGateway(EmailGateway emailGateway) {
+ this.emailGateway = emailGateway;
+ }
+
+ public void setTransactionFee(Float transactionFee) {
+ this.transactionFee = transactionFee;
+ }
+
+ public String makePaymentMember(String customerId, float amount) {
+ try {
+ Customer customer = customerRegistry.getCustomer(customerId);
+
+ amount += transactionFee;
+
+ String status = creditCardPayment.authorize(customer.getCreditCard(), amount);
+
+ com.tuscanyscatours.emailgateway.ObjectFactory emailFactory =
+ new com.tuscanyscatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ } catch (CustomerNotFoundException ex) {
+ return "Payment failed due to " + ex.getMessage();
+ } catch (Throwable t) {
+ return "Payment failed due to system error " + t.getMessage();
+ }
+ }
+
+}
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..8224cd126f
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,118 @@
+<?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">
+ <xsd:complexType>
+ <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>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <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-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..9e9a6ea685
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/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:8088/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..41677f6601
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:payment" />
+ <export.java package="com.tuscanyscatours.payment"/>
+</contribution>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml
new file mode 100644
index 0000000000..bcb965924b
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<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="com.tuscanyscatours.payment.impl.PaymentImpl">
+ <property name="creditCardPayment" ref="creditCardPaymentReference"/>
+ <property name="emailGateway" ref="emailGateway"/>
+ <property name="customerRegistry" ref="customerRegistry"/>
+ <property name="transactionFee" value="0.5f"/>
+ </bean>
+
+</beans>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/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-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..07092deba3
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<definitions xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1">
+
+ <!-- Policy Sets -->
+ <policySet name="BasicAuthenticationPolicySet"
+ provides="authentication"
+ appliesTo="sca:binding.ws">
+ <tuscany:basicAuthentication>
+ <tuscany:userName>myname</tuscany:userName>
+ <tuscany:password>mypassword</tuscany:password>
+ </tuscany:basicAuthentication>
+ </policySet>
+
+</definitions>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite
new file mode 100644
index 0000000000..5ee7ef73b0
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite
@@ -0,0 +1,45 @@
+<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <binding.ws uri="http://localhost:8081/Payment"/>
+ </service>
+ <reference name="creditCardPaymentReference" >
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
+ </reference>
+ <reference name="emailGateway" target="EmailGateway"/>
+ <reference name="customerRegistry" target="CustomerRegistry"/>
+ <property name="transactionFee">1.23</property>
+ </component>
+
+ <component name="CustomerRegistry">
+ <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
+ </component>
+
+ <component name="EmailGateway">
+ <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..1c03ef1572
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.Node;
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static Node paymentNode;
+ private static Node creditCardNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ creditCardNode =
+ NodeFactory.getInstance()
+ .createNode("creditcard.composite",
+ new Contribution("creditcard", "../creditcard-payment-jaxb-policy/target/classes"));
+
+ creditCardNode.start();
+
+ paymentNode =
+ NodeFactory.getInstance()
+ .createNode(
+ new Contribution("payment-spring-policy", "./target/classes"),
+ new Contribution("payment-spring-policy-test", "./target/test-classes"));
+
+ paymentNode.start();
+ }
+
+ @Test
+ public void testPayment() {
+ Node client = (Node)paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("c-0", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ }
+
+}
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
new file mode 100644
index 0000000000..3fee35a1db
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/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.impl;
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+
+import com.tuscanyscatours.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-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..969a5286cc
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:paymentClient" />
+ <import.java package="com.tuscanyscatours.payment"/>
+</contribution>
diff --git a/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite
new file mode 100644
index 0000000000..b442a46101
--- /dev/null
+++ b/sca-java-2.x/contrib/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="paymentClient">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.impl.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8081/Payment" />
+ </reference>
+ </component>
+
+</composite>