summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-07 22:04:23 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-07-07 22:04:23 +0000
commit1cafec6621f1acdc1809e67d42b3915411dddf21 (patch)
treeb7d6f21c3e1f2fa562fc776ae0b473ec6eb9574a /java
parent7c535773f216d7f87d71718a27df6c0b85a59854 (diff)
Add an itest for policies
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@791992 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/sca/itest/policies/pom.xml53
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCard.java65
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCardPayment.java37
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Customer.java51
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CustomerRegistry.java27
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Payment.java30
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CreditCardPaymentImpl.java40
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CustomerRegistryImpl.java78
-rw-r--r--java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/PaymentImpl.java52
-rw-r--r--java/sca/itest/policies/src/main/resources/Customer.composite34
-rw-r--r--java/sca/itest/policies/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--java/sca/itest/policies/src/main/resources/Payment.composite48
-rw-r--r--java/sca/itest/policies/src/test/java/org/apache/tuscany/sca/itest/policies/PaymentTestCase.java69
13 files changed, 607 insertions, 0 deletions
diff --git a/java/sca/itest/policies/pom.xml b/java/sca/itest/policies/pom.xml
new file mode 100644
index 0000000000..919e5c057b
--- /dev/null
+++ b/java/sca/itest/policies/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-itest</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>itest-policies</artifactId>
+ <name>Apache Tuscany SCA iTest Policies</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCard.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCard.java
new file mode 100644
index 0000000000..2d7c9b163f
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCard.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.itest.policies;
+
+import java.io.Serializable;
+
+/**
+ * Credit Card
+ */
+public class CreditCard implements Serializable {
+ private static final long serialVersionUID = -6107293191546007197L;
+ private String type;
+ private String number;
+ private String owner;
+ private int expMonth;
+ private int expYear;
+
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+ public String getNumber() {
+ return number;
+ }
+ public void setNumber(String number) {
+ this.number = number;
+ }
+ public String getOwner() {
+ return owner;
+ }
+ public void setOwner(String owner) {
+ this.owner = owner;
+ }
+ public int getExpMonth() {
+ return expMonth;
+ }
+ public void setExpMonth(int expMonth) {
+ this.expMonth = expMonth;
+ }
+ public int getExpYear() {
+ return expYear;
+ }
+ public void setExpYear(int expYear) {
+ this.expYear = expYear;
+ }
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCardPayment.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCardPayment.java
new file mode 100644
index 0000000000..14b7c06d41
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CreditCardPayment.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 org.apache.tuscany.sca.itest.policies;
+
+import org.oasisopen.sca.annotation.Authentication;
+import org.oasisopen.sca.annotation.Confidentiality;
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ *
+ */
+@Remotable
+@Authentication
+public interface CreditCardPayment {
+ String COMPLETED = "Completed";
+ String REJECTED = "Rejected";
+
+ @Confidentiality
+ String authorize(CreditCard creditCard, float amount);
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Customer.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Customer.java
new file mode 100644
index 0000000000..c4c4688288
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Customer.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.itest.policies;
+
+import java.io.Serializable;
+
+/**
+ * Customer
+ */
+public class Customer implements Serializable {
+ private static final long serialVersionUID = 680227659536711695L;
+ private String id;
+ private String name;
+ private CreditCard creditCard;
+
+ public String getId() {
+ return id;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public CreditCard getCreditCard() {
+ return creditCard;
+ }
+ public void setCreditCard(CreditCard creditCard) {
+ this.creditCard = creditCard;
+ }
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CustomerRegistry.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CustomerRegistry.java
new file mode 100644
index 0000000000..ef59dea27d
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/CustomerRegistry.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.itest.policies;
+
+/**
+ *
+ */
+public interface CustomerRegistry {
+ Customer find(String id);
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Payment.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Payment.java
new file mode 100644
index 0000000000..849bf19863
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/Payment.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.itest.policies;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ *
+ */
+@Remotable
+public interface Payment {
+ String charge(String customerID, float amount);
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CreditCardPaymentImpl.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..978d3316e8
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CreditCardPaymentImpl.java
@@ -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.
+ */
+
+package org.apache.tuscany.sca.itest.policies.impl;
+
+import org.apache.tuscany.sca.itest.policies.CreditCard;
+import org.apache.tuscany.sca.itest.policies.CreditCardPayment;
+
+/**
+ *
+ */
+public class CreditCardPaymentImpl implements CreditCardPayment {
+
+ public String authorize(CreditCard creditCard, float amount) {
+ System.out.println(creditCard.getType() + " " + creditCard.getNumber());
+ System.out.println(amount);
+ if (amount < 200f) {
+ return COMPLETED;
+ } else {
+ return REJECTED;
+ }
+ }
+
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CustomerRegistryImpl.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CustomerRegistryImpl.java
new file mode 100644
index 0000000000..381ef4f239
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/CustomerRegistryImpl.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 org.apache.tuscany.sca.itest.policies.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.itest.policies.CreditCard;
+import org.apache.tuscany.sca.itest.policies.Customer;
+import org.apache.tuscany.sca.itest.policies.CustomerRegistry;
+import org.oasisopen.sca.annotation.Destroy;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+/**
+ *
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+public class CustomerRegistryImpl implements CustomerRegistry {
+ private Map<String, Customer> customers = new HashMap<String, Customer>();
+
+
+ @Init
+ public void init() {
+ Customer c1 = new Customer();
+ c1.setId("001");
+ c1.setName("John Smith");
+ CreditCard creditCard = new CreditCard();
+ creditCard.setNumber("1234-5678-1234");
+ creditCard.setType("Visa");
+ creditCard.setOwner("John Smith");
+ creditCard.setExpMonth(6);
+ creditCard.setExpYear(2015);
+ c1.setCreditCard(creditCard);
+ customers.put(c1.getId(), c1);
+
+ Customer c2 = new Customer();
+ c2.setId("002");
+ c2.setName("Jane Smith");
+ creditCard = new CreditCard();
+ creditCard.setNumber("1234-5678-5678");
+ creditCard.setType("MasterCard");
+ creditCard.setOwner("Jane Smith");
+ creditCard.setExpMonth(9);
+ creditCard.setExpYear(2012);
+ c2.setCreditCard(creditCard);
+ customers.put(c2.getId(), c2);
+ }
+
+ public Customer find(String id) {
+ return customers.get(id);
+ }
+
+ @Destroy
+ public void destroy() {
+ customers.clear();
+ }
+
+}
diff --git a/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/PaymentImpl.java b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/PaymentImpl.java
new file mode 100644
index 0000000000..1388d2ea75
--- /dev/null
+++ b/java/sca/itest/policies/src/main/java/org/apache/tuscany/sca/itest/policies/impl/PaymentImpl.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.itest.policies.impl;
+
+import org.apache.tuscany.sca.itest.policies.CreditCard;
+import org.apache.tuscany.sca.itest.policies.CreditCardPayment;
+import org.apache.tuscany.sca.itest.policies.Customer;
+import org.apache.tuscany.sca.itest.policies.CustomerRegistry;
+import org.apache.tuscany.sca.itest.policies.Payment;
+import org.oasisopen.sca.annotation.Authentication;
+import org.oasisopen.sca.annotation.Confidentiality;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Requires;
+
+/**
+ *
+ */
+public class PaymentImpl implements Payment {
+
+ @Reference
+ protected CustomerRegistry customerRegistry;
+
+ @Reference
+ @Authentication
+ @Requires({Confidentiality.CONFIDENTIALITY_MESSAGE, Confidentiality.CONFIDENTIALITY_TRANSPORT})
+ protected CreditCardPayment creditCardPayment;
+
+ public String charge(String customerID, float amount) {
+ Customer customer = customerRegistry.find(customerID);
+ CreditCard creditCard = customer.getCreditCard();
+ String status = creditCardPayment.authorize(creditCard, amount);
+ return status;
+ }
+
+}
diff --git a/java/sca/itest/policies/src/main/resources/Customer.composite b/java/sca/itest/policies/src/main/resources/Customer.composite
new file mode 100644
index 0000000000..29458ad284
--- /dev/null
+++ b/java/sca/itest/policies/src/main/resources/Customer.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903"
+ xmlns:c="http://customer"
+ xmlns:sca = "http://docs.oasis-open.org/ns/opencsa/sca/200903"
+ targetNamespace="http://customer"
+ name="Customer">
+
+ <service name="Registry" promote="CustomerRegistry">
+ <binding.sca/>
+ </service>
+
+ <component name="CustomerRegistry">
+ <implementation.java class="org.apache.tuscany.sca.itest.policies.impl.CustomerRegistryImpl" />
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/java/sca/itest/policies/src/main/resources/META-INF/sca-contribution.xml b/java/sca/itest/policies/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..ca9ae2f775
--- /dev/null
+++ b/java/sca/itest/policies/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://docs.oasis-open.org/ns/opencsa/sca/200903"
+ xmlns:p="http://payment">
+ <deployable composite="p:Payment" />
+</contribution> \ No newline at end of file
diff --git a/java/sca/itest/policies/src/main/resources/Payment.composite b/java/sca/itest/policies/src/main/resources/Payment.composite
new file mode 100644
index 0000000000..a1f9aefdac
--- /dev/null
+++ b/java/sca/itest/policies/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://docs.oasis-open.org/ns/opencsa/sca/200903"
+ xmlns:p="http://payment"
+ xmlns:c="http://customer"
+ xmlns:sca = "http://docs.oasis-open.org/ns/opencsa/sca/200903"
+ requires = "sca:authorization"
+ targetNamespace="http://payment"
+ name="Payment">
+
+ <component name="Payment">
+ <implementation.java class="org.apache.tuscany.sca.itest.policies.impl.PaymentImpl" />
+ <reference name="creditCardPayment" target="CreditCardPayment">
+ <binding.sca requires="sca:integrity">
+ </binding.sca>
+ </reference>
+ <reference name="customerRegistry" target="Customer/Registry" requires="sca:suspendsTransaction"/>
+ </component>
+
+ <component name="CreditCardPayment">
+ <implementation.java class="org.apache.tuscany.sca.itest.policies.impl.CreditCardPaymentImpl" />
+ </component>
+
+ <component name="Customer">
+ <implementation.composite name="c:Customer" requires="sca:managedTransaction.global"/>
+ <service name="Registry" requires="sca:suspendsTransaction">
+ <binding.sca/>
+ </service>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/java/sca/itest/policies/src/test/java/org/apache/tuscany/sca/itest/policies/PaymentTestCase.java b/java/sca/itest/policies/src/test/java/org/apache/tuscany/sca/itest/policies/PaymentTestCase.java
new file mode 100644
index 0000000000..1845656c2d
--- /dev/null
+++ b/java/sca/itest/policies/src/test/java/org/apache/tuscany/sca/itest/policies/PaymentTestCase.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.itest.policies;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class PaymentTestCase {
+ private static Node node;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ try {
+ String location = ContributionLocationHelper.getContributionLocation("Payment.composite");
+ node = NodeFactory.newInstance().createNode(new Contribution("c1", location));
+ node.start();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+
+ @Test
+ public void testPayment() {
+ Payment payment = node.getService(Payment.class, "Payment");
+ String status = payment.charge("001", 100f);
+ Assert.assertEquals(CreditCardPayment.COMPLETED, status);
+
+ status = payment.charge("002", 300f);
+ Assert.assertEquals(CreditCardPayment.REJECTED, status);
+ }
+
+ public static void main(String[] args) throws Exception {
+ PaymentTestCase.init();
+ PaymentTestCase tester = new PaymentTestCase();
+ tester.testPayment();
+ PaymentTestCase.destroy();
+ }
+}