You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2009/05/13 01:16:21 UTC

svn commit: r774129 [4/5] - in /tuscany/sandbox/travelsample/contributions: ./ calendar-contribution/ calendar-contribution/src/ calendar-contribution/src/main/ calendar-contribution/src/main/java/ calendar-contribution/src/main/java/calendar/ calendar...

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistry.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistry.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistry.java (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistry.java Tue May 12 23:16:14 2009
@@ -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 scatours.customer;
+
+import java.util.Collection;
+
+import 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);
+}

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistryImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistryImpl.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistryImpl.java (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/customer/CustomerRegistryImpl.java Tue May 12 23:16:14 2009
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.customer;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Requires;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import payment.creditcard.CreditCardDetailsType;
+import payment.creditcard.CreditCardTypeType;
+import payment.creditcard.ObjectFactory;
+import payment.creditcard.PayerType;
+
+/**
+ * An in-memory customer registry implementation
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+@EagerInit
+@Requires("{http://www.osoa.org/xmlns/sca/1.0}managedTransaction.global")
+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;
+    }
+
+}

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGateway.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGateway.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGateway.java (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGateway.java Tue May 12 23:16:14 2009
@@ -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 scatours.emailgateway;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * A gateway to send e-mail
+ */
+@Remotable
+public interface EmailGateway {
+    public boolean sendEmail(String sender, String recipient, String subject, String body);
+}

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/java/scatours/emailgateway/EmailGatewayImpl.java Tue May 12 23:16:14 2009
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package scatours.emailgateway;
+
+import org.osoa.sca.annotations.Service;
+
+@Service(EmailGateway.class)
+public class EmailGatewayImpl implements EmailGateway {
+
+    public boolean sendEmail(String sender, String recipient, String subject, String body) {
+        System.out.println("From: " + sender);
+        System.out.println("To: " + recipient);
+        System.out.println("Subject: " + subject);
+        System.out.println(body);
+        return true;
+    }
+
+}

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/CreditCardPayment.wsdl
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/CreditCardPayment.wsdl?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/CreditCardPayment.wsdl (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/CreditCardPayment.wsdl Tue May 12 23:16:14 2009
@@ -0,0 +1,130 @@
+<?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:element name="authorizeFault">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="errorCode" type="xsd:string"></xsd:element>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+        </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:message name="AuthorizeFault">
+        <wsdl:part name="parameters" element="tns:authorizeFault"></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:fault name="authorizationFailure" message="tns:AuthorizeFault"></wsdl:fault>
+        </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:fault name="authorizationFailure">
+                <soap:fault name="authorizationFailure" use="literal"/>
+            </wsdl:fault>
+        </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

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/META-INF/sca-contribution.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/META-INF/sca-contribution.xml (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/META-INF/sca-contribution.xml Tue May 12 23:16:14 2009
@@ -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

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/Payment.wsdl
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/Payment.wsdl?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/Payment.wsdl (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/Payment.wsdl Tue May 12 23:16:14 2009
@@ -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

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/definitions.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/definitions.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/definitions.xml (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/definitions.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+-->
+<definitions xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ 			targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ 			xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+
+	<!-- Policy Intents Defined by the SCA Runtime -->
+	<intent name="authorization" constrains="sca:implementation"/>
+    
+    <!-- Policy intents -->
+    <policySet name="ps1" provides="sca:authorization" appliesTo="sca:implementation.java"/>
+    
+    <policySet name="ps2" provides="sca:managedTransaction.global" appliesTo="sca:implementation.java"/>
+	
+</definitions>

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/payment.composite
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/payment.composite?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/payment.composite (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/main/resources/payment.composite Tue May 12 23:16:14 2009
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" 
+           targetNamespace="http://scatours"
+           xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+           xmlns:c="http://scatours" 
+           name="payment">
+           
+    <component name="PaymentComponent">
+        <implementation.java class="payment.PaymentImpl" />
+        <reference name="customerRegistry" target="CustomerRegistryComponent"/>
+        <reference name="creditCardPayment" target="CreditCardPaymentComponent"/>
+        <reference name="emailGateway" target="EmailGatewayComponent"/>
+        <property name="transactionFeeRate">0.02</property>
+    </component>
+    
+    <component name="CustomerRegistryComponent">
+        <implementation.java class="scatours.customer.CustomerRegistryImpl" />
+    </component>
+    
+    <component name="EmailGatewayComponent">
+        <implementation.java class="scatours.emailgateway.EmailGatewayImpl" />
+    </component>    
+    
+    <component name="CreditCardPaymentComponent">
+        <implementation.java class="payment.creditcard.CreditCardPaymentImpl" />
+    </component>
+    
+</composite>
\ No newline at end of file

Added: tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/test/java/payment/PaymentTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/test/java/payment/PaymentTestCase.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/test/java/payment/PaymentTestCase.java (added)
+++ tuscany/sandbox/travelsample/contributions/payment-java-contribution/src/test/java/payment/PaymentTestCase.java Tue May 12 23:16:14 2009
@@ -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 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("c-0", 100.00f));
+        System.out.println(payment.makePaymentMember("c-1", 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;
+        }
+    }
+
+}

Added: tuscany/sandbox/travelsample/contributions/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/pom.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/pom.xml (added)
+++ tuscany/sandbox/travelsample/contributions/pom.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * 
+    *   http://www.apache.org/licenses/LICENSE-2.0
+    * 
+    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    
+-->
+<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>scatours-contributions</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache Tuscany SCA Tours Contributions</name>
+
+    <profiles>
+        <profile>
+            <id>default</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <modules>
+                <module>calendar-contribution</module>
+                <module>car-contribution</module>
+                <module>common-contribution</module>
+                <module>creditcard-payment-jaxb-contribution</module>
+                <module>currency-contribution</module>
+                <module>emailgateway-contribution</module>
+                <module>flight-contribution</module>
+                <module>hotel-contribution</module>
+                <module>interaction-ui-contribution</module>
+                <module>introducing-client-contribution</module>
+                <module>introducing-goodvaluetrips-contribution</module>
+                <module>introducing-tuscanyscatours-contribution</module>
+                <module>shoppingcart-contribution</module>   
+                <module>travelcatalog-contribution</module>         
+                <module>tripbooking-contribution</module>
+                <module>trip-contribution</module>
+                <module>scatours-contribution</module>
+                <module>payment-java-contribution</module>
+            </modules>
+        </profile>
+
+    </profiles>
+
+</project>

Added: tuscany/sandbox/travelsample/contributions/scatours-contribution/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/scatours-contribution/pom.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/scatours-contribution/pom.xml (added)
+++ tuscany/sandbox/travelsample/contributions/scatours-contribution/pom.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,94 @@
+<?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>scatours-scatours-contribution</artifactId>
+    <name>Apache Tuscany SCA Tours SCATours Contribution</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-sca-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-data-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-common-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>   
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-currency-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-travelcatalog-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-tripbooking-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-shoppingcart-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>     
+
+        <!--        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-paymentprocess-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+        -->
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.5</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+       <finalName>${artifactId}</finalName>
+    </build>
+</project>

Added: tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursBooking.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursBooking.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursBooking.java (added)
+++ tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursBooking.java Tue May 12 23:16:14 2009
@@ -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 scatours;
+
+
+import org.osoa.sca.annotations.Remotable;
+
+import scatours.common.TripItem;
+
+/**
+ * The SCA Tours trip booking service interface
+ */
+@Remotable
+public interface SCAToursBooking {
+    String bookTrip(String cartId, TripItem tripId);
+}

Added: tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursCart.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursCart.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursCart.java (added)
+++ tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursCart.java Tue May 12 23:16:14 2009
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package scatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+import scatours.common.TripItem;
+
+/**
+ * The ShoppingCart service interface
+ */
+@Remotable
+public interface SCAToursCart{
+    String newCart();
+    TripItem[] getTrips(String cartId);
+    void checkout(String cartId);  
+}

Added: tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursImpl.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursImpl.java (added)
+++ tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursImpl.java Tue May 12 23:16:14 2009
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package scatours;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import scatours.common.TripItem;
+import scatours.common.TripLeg;
+import scatours.shoppingcart.ShoppingCart;
+import scatours.travelcatalog.TravelCatalogSearch;
+import scatours.tripbooking.TripBooking;
+
+/**
+ * An implementation of the SCA tours component. This component currently provides
+ * a front end to the components that the UI communicated with. It allows a conversation
+ * to be held with the shopping cart as javascript doesn't support conversations. 
+ * Other than that it's just a pass through so we could look to remove it.
+ */
+@Scope("COMPOSITE")
+@Service(interfaces={SCAToursSearch.class, SCAToursBooking.class, SCAToursCart.class})
+public class SCAToursImpl implements SCAToursSearch, SCAToursBooking, SCAToursCart{
+    
+    @Reference
+    protected TravelCatalogSearch travelCatalogSearch;
+    
+    @Reference 
+    protected TripBooking tripBooking;
+    
+    @Reference 
+    protected ShoppingCart shoppingCart; 
+    
+    @Context
+    protected ComponentContext componentContext;  
+    
+    private Map<String,ShoppingCart> carts = new HashMap<String,ShoppingCart>();
+    private Map<String,TripBooking> trips = new HashMap<String,TripBooking>();
+    
+    // SCAToursSearch methods
+    
+    public TripItem[] search(TripLeg tripLeg) {
+        
+        return travelCatalogSearch.search(tripLeg);
+ 
+    } 
+
+    // SCAToursBooking methods
+    
+    public String bookTrip(String cartId, TripItem trip){
+        TripItem bookedTrip = tripBooking.bookTrip(cartId, trip);
+        carts.get(cartId).addTrip(bookedTrip);
+        return bookedTrip.getBookingCode();
+    }
+    
+    // SCAToursCart methods
+    
+    public String newCart(){
+        String cartId = UUID.randomUUID().toString();
+        ServiceReference<ShoppingCart> shoppingCart = componentContext.getServiceReference(ShoppingCart.class, 
+                                                                                           "shoppingCart");
+        shoppingCart.setConversationID(cartId);
+        carts.put(cartId, shoppingCart.getService());
+        
+        return cartId;
+    }  
+    
+    public TripItem[] getTrips(String cartId){
+        return carts.get(cartId).getTrips();
+    }
+    
+    public void checkout(String cartId){
+        // need to get the user id from the context here
+        carts.get(cartId).checkout("Fred");
+    }   
+}

Added: tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursSearch.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursSearch.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursSearch.java (added)
+++ tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/java/scatours/SCAToursSearch.java Tue May 12 23:16:14 2009
@@ -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 scatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+import scatours.common.TripItem;
+import scatours.common.TripLeg;
+
+/**
+ * The Trip service interface
+ */
+@Remotable
+public interface SCAToursSearch {
+    TripItem[] search(TripLeg tripLeg);
+}

Added: tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/resources/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/resources/META-INF/sca-contribution.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/resources/META-INF/sca-contribution.xml (added)
+++ tuscany/sandbox/travelsample/contributions/scatours-contribution/src/main/resources/META-INF/sca-contribution.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,26 @@
+<?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="scatours.common"/>
+   <import.java package="scatours.travelcatalog"/>
+   <import.java package="scatours.tripbooking"/>
+   <import.java package="scatours.shoppingcart"/>
+   <export.java package="scatours"/>
+</contribution>
\ No newline at end of file

Added: tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/pom.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/pom.xml (added)
+++ tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/pom.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,119 @@
+<?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>scatours-shoppingcart-contribution</artifactId>
+    <name>Apache Tuscany SCA Tours Shopping Cart Contribution</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-sca-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-data-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-common-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>   
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-currency-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+       
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-payment-java-contribution</artifactId>
+            <version>1.5-SNAPSHOT</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>
+                            <verbose>false</verbose>
+                            <xnocompile>true</xnocompile>
+                        </configuration>
+                    </execution>               
+                </executions>
+            </plugin>      
+        </plugins>
+    </build>
+</project>

Added: tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCart.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCart.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCart.java (added)
+++ tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCart.java Tue May 12 23:16:14 2009
@@ -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 scatours.shoppingcart;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+import scatours.common.TripItem;
+
+/**
+ * The ShoppingCart service interface
+ */
+@Remotable
+@Conversational
+public interface ShoppingCart{
+    void addTrip(TripItem trip);
+    void removeTrip(TripItem trip);
+    TripItem[] getTrips();
+    
+    @EndsConversation
+    void checkout(String name);  
+}

Added: tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCartImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCartImpl.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCartImpl.java (added)
+++ tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/java/scatours/shoppingcart/ShoppingCartImpl.java Tue May 12 23:16:14 2009
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package scatours.shoppingcart;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import payment.Payment;
+import scatours.common.TripItem;
+
+/**
+ * An implementation of the Trip service
+ */
+@Scope("CONVERSATION")
+@Service(interfaces={ShoppingCart.class})
+public class ShoppingCartImpl implements ShoppingCart{
+    
+    @Reference
+    protected Payment payment;   
+
+    @ConversationID
+    protected String cartId;
+    
+    private List<TripItem> trips = new ArrayList<TripItem>();
+     
+    // Trip methods
+    
+    @Init
+    public void initCart() {
+        System.out.println("Cart init for id: " + cartId);
+    }
+    
+    @Destroy
+    public void destroyCart() {
+        System.out.println("Cart destroy for id: " + cartId);
+    }
+    
+    public void addTrip(TripItem trip) {
+        trips.add(trip);
+    }
+    
+    public void removeTrip(TripItem trip) {
+        trips.remove(trip);
+    }
+    
+    public TripItem[] getTrips(){
+        return trips.toArray(new TripItem[trips.size()]);
+    }
+    
+    public void checkout(String customerName){ 
+        // get users credentials. Hard coded for now but should
+        // come from the security context
+        String customerId = customerName;
+       
+        // get the total for all the trips
+        float amount = (float)0.0;
+        
+        for (TripItem trip : trips){
+            if (trip.getType().equals(TripItem.TRIP)){
+                amount += trip.getPrice();
+            } else {
+                for (TripItem tripItem : trip.getTripItems()){
+                    amount += tripItem.getPrice();
+                }
+            }
+        }
+        
+        // Take the payment from the customer
+        payment.makePaymentMember(customerId, amount);
+    }  
+    
+}

Added: tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/META-INF/sca-contribution.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/META-INF/sca-contribution.xml (added)
+++ tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/META-INF/sca-contribution.xml Tue May 12 23:16:14 2009
@@ -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="scatours.common"/>
+   <import.java package="scatours.paymentprocess"/>
+   <export.java package="scatours.shoppingcart"/>
+</contribution>
\ No newline at end of file

Added: tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/Payment.wsdl
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/Payment.wsdl?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/Payment.wsdl (added)
+++ tuscany/sandbox/travelsample/contributions/shoppingcart-contribution/src/main/resources/Payment.wsdl Tue May 12 23:16:14 2009
@@ -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

Added: tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/pom.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/pom.xml (added)
+++ tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/pom.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,74 @@
+<?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>scatours-travelcatalog-contribution</artifactId>
+    <name>Apache Tuscany SCA Tours Travel Catalog Contribution</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-sca-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-data-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-common-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>   
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-currency-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-tripbooking-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.5</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+       <finalName>${artifactId}</finalName>
+    </build>
+</project>

Added: tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogImpl.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogImpl.java (added)
+++ tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogImpl.java Tue May 12 23:16:14 2009
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package scatours.travelcatalog;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import scatours.common.Search;
+import scatours.common.SearchCallback;
+import scatours.common.TripItem;
+import scatours.common.TripLeg;
+import scatours.currencyconverter.CurrencyConverter;
+
+/**
+ * An implementation of the Trip service
+ */
+@Scope("COMPOSITE")
+@Service(interfaces={TravelCatalogSearch.class})
+public class TravelCatalogImpl implements TravelCatalogSearch, SearchCallback{
+    
+    @Reference 
+    protected Search hotelSearch;
+    
+    @Reference 
+    protected Search flightSearch;
+    
+    @Reference 
+    protected Search carSearch;
+    
+    @Reference 
+    protected Search tripSearch;    
+           
+    @Property
+    public String quoteCurrencyCode = "USD";
+    
+    @Reference
+    protected CurrencyConverter currencyConverter;    
+    
+    @Context
+    protected ComponentContext componentContext;
+    
+    private int responsesReceived = 0;
+    
+    private List<TripItem> searchResults = new ArrayList<TripItem>();
+    
+    // TravelSearch methods
+    
+    public TripItem[] search(TripLeg tripLeg) {
+        
+        searchResults.clear();
+        responsesReceived = 0;
+        
+        ServiceReference<Search> dynamicHotelSearch = 
+            componentContext.getServiceReference(Search.class, "hotelSearch");
+        
+        dynamicHotelSearch.setCallbackID("HotelSearchCallbackID-" + tripLeg.getId());        
+        dynamicHotelSearch.getService().searchAsynch(tripLeg);
+        
+        flightSearch.searchAsynch(tripLeg);
+        carSearch.searchAsynch(tripLeg);
+        tripSearch.searchAsynch(tripLeg);
+        
+        while (responsesReceived < 4){
+            try {
+                synchronized (this) {
+                    this.wait();
+                }
+            } catch (InterruptedException ex){
+                // do nothing
+            }
+        }
+        
+        for (TripItem tripItem : searchResults){
+            tripItem.setId(UUID.randomUUID().toString());
+            tripItem.setTripId(tripLeg.getId());
+            tripItem.setPrice(currencyConverter.convert(tripItem.getCurrency(), 
+                                                        quoteCurrencyCode, 
+                                                        tripItem.getPrice()));
+            tripItem.setCurrency(quoteCurrencyCode);
+        }
+        
+        return searchResults.toArray(new TripItem[searchResults.size()]);
+    }
+    
+    // SearchCallback methods
+    
+    public void searchResults(TripItem[] items){
+        RequestContext requestContext = componentContext.getRequestContext();
+        Object callbackID = requestContext.getServiceReference().getCallbackID();
+        System.out.println(callbackID);
+        
+        if (items != null) {
+            for(int i = 0; i < items.length; i++ ){
+                searchResults.add(items[i]);
+            }
+        }
+        
+        responsesReceived++;
+        try {
+            synchronized (this) {
+                this.notifyAll();
+            }
+        } catch (Exception ex) {
+        }
+    }    
+}

Added: tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogSearch.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogSearch.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogSearch.java (added)
+++ tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/java/scatours/travelcatalog/TravelCatalogSearch.java Tue May 12 23:16:14 2009
@@ -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 scatours.travelcatalog;
+
+import org.osoa.sca.annotations.Remotable;
+
+import scatours.common.TripItem;
+import scatours.common.TripLeg;
+
+/**
+ * The Trip service interface
+ */
+@Remotable
+public interface TravelCatalogSearch {
+    TripItem[] search(TripLeg tripLeg);
+}

Added: tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/resources/META-INF/sca-contribution.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/resources/META-INF/sca-contribution.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/resources/META-INF/sca-contribution.xml (added)
+++ tuscany/sandbox/travelsample/contributions/travelcatalog-contribution/src/main/resources/META-INF/sca-contribution.xml Tue May 12 23:16:14 2009
@@ -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="scatours.common"/>
+   <import.java package="scatours.currencyconverter"/>
+   <export.java package="scatours.travelcatalog"/>
+</contribution>
\ No newline at end of file

Added: tuscany/sandbox/travelsample/contributions/trip-contribution/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/trip-contribution/pom.xml?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/trip-contribution/pom.xml (added)
+++ tuscany/sandbox/travelsample/contributions/trip-contribution/pom.xml Tue May 12 23:16:14 2009
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * 
+    *   http://www.apache.org/licenses/LICENSE-2.0
+    * 
+    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    
+-->
+<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>scatours-trip-contribution</artifactId>
+    <name>Apache Tuscany SCA Tours Prepackaged Trip Contribution</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-sca-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-data-api</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>scatours-common-contribution</artifactId>
+            <version>1.5-SNAPSHOT</version>
+        </dependency> 
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.5</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+       <finalName>${artifactId}</finalName>
+    </build>
+</project>

Added: tuscany/sandbox/travelsample/contributions/trip-contribution/src/main/java/scatours/trip/TripImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/contributions/trip-contribution/src/main/java/scatours/trip/TripImpl.java?rev=774129&view=auto
==============================================================================
--- tuscany/sandbox/travelsample/contributions/trip-contribution/src/main/java/scatours/trip/TripImpl.java (added)
+++ tuscany/sandbox/travelsample/contributions/trip-contribution/src/main/java/scatours/trip/TripImpl.java Tue May 12 23:16:14 2009
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package scatours.trip;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import scatours.common.Book;
+import scatours.common.Search;
+import scatours.common.SearchCallback;
+import scatours.common.TripItem;
+import scatours.common.TripLeg;
+
+/**
+ * An implementation of the Hotel service
+ */
+@Scope("STATELESS")
+@Service(interfaces={Search.class, Book.class})
+public class TripImpl implements Search, Book {
+    
+    private List<TripInfo> trips = new ArrayList<TripInfo>();
+    
+    @Callback
+    protected SearchCallback searchCallback; 
+
+    @Init
+    public void init() {
+        trips.add(new TripInfo("FS1DEC06", 
+                               "Florence and Siena pre-packaged tour",
+                               "LGW",
+                               "FLR",
+                               "06/12/09",
+                               "13/12/09",
+                               "27",
+                               450,
+                               "EUR",
+                               "http://localhost:8085/tbd" ));
+        trips.add(new TripInfo("FS1DEC13", 
+                               "Florence and Siena pre-packaged tour 2",
+                               "LGW",
+                               "FLR",
+                               "13/12/09",
+                               "20/12/09",
+                               "27",
+                               550,
+                               "EUR",
+                               "http://localhost:8085/tbd" ));
+    }
+    
+    public TripItem[] searchSynch(TripLeg tripLeg) {
+        List<TripItem> items = new ArrayList<TripItem>();
+        
+        // find the pre-package trip
+        for(TripInfo trip : trips){
+            if ((trip.getFromLocation().equals(tripLeg.getFromLocation())) &&
+                (trip.getToLocation().equals(tripLeg.getToLocation())) &&
+                (trip.getFromDate().equals(tripLeg.getFromDate()))){
+                TripItem item = new TripItem("",
+                                             "",
+                                             TripItem.TRIP,
+                                             trip.getName(), 
+                                             trip.getDescription(), 
+                                             trip.getFromLocation() + " - " + trip.getToLocation(),
+                                             trip.getFromDate(),
+                                             trip.getToDate(),
+                                             trip.getPricePerPerson(),
+                                             trip.getCurrency(),
+                                             trip.getLink());
+                items.add(item);
+            }
+        }      
+        
+        return items.toArray(new TripItem[items.size()]);
+    }
+    
+    public void searchAsynch(TripLeg tripLeg) {
+        
+        // return available hotels
+        searchCallback.searchResults(searchSynch(tripLeg));  
+    }
+    
+    public String book(TripItem tripItem) {
+        return "trip1";
+    }      
+}