summaryrefslogtreecommitdiffstats
path: root/sandbox/travelsample/scatours-contribution
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-01-05 11:49:06 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-01-05 11:49:06 +0000
commit6ecc521d85871c1bc0d37927717434edcaccf234 (patch)
tree71cb219791ac9c910ef8adcb7d2b7ace7d56890d /sandbox/travelsample/scatours-contribution
parent09145b638ddca5e5aab648290314163666e3dcc3 (diff)
Add in shopping cart and extend scenario to talk to payment process. Now needs a revamp to simplify and to allow preconfigured trips to be added to the cart.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@731534 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/travelsample/scatours-contribution')
-rw-r--r--sandbox/travelsample/scatours-contribution/META-INF/sca-contribution.xml2
-rw-r--r--sandbox/travelsample/scatours-contribution/pom.xml8
-rw-r--r--sandbox/travelsample/scatours-contribution/src/scatours/SCAToursBooking.java13
-rw-r--r--sandbox/travelsample/scatours-contribution/src/scatours/SCAToursImpl.java78
4 files changed, 75 insertions, 26 deletions
diff --git a/sandbox/travelsample/scatours-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/scatours-contribution/META-INF/sca-contribution.xml
index f34665c92d..6d6a563b74 100644
--- a/sandbox/travelsample/scatours-contribution/META-INF/sca-contribution.xml
+++ b/sandbox/travelsample/scatours-contribution/META-INF/sca-contribution.xml
@@ -22,5 +22,7 @@
<import.java package="scatours.currencyconverter"/>
<import.java package="scatours.travelcatalog"/>
<import.java package="scatours.tripbooking"/>
+ <import.java package="scatours.paymentprocess"/>
+ <import.java package="scatours.shoppingcart"/>
<export.java package="scatours"/>
</contribution> \ No newline at end of file
diff --git a/sandbox/travelsample/scatours-contribution/pom.xml b/sandbox/travelsample/scatours-contribution/pom.xml
index 8470e06b05..500d23f4b8 100644
--- a/sandbox/travelsample/scatours-contribution/pom.xml
+++ b/sandbox/travelsample/scatours-contribution/pom.xml
@@ -69,7 +69,13 @@
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>scatours-shoppingcart-contribution</artifactId>
<version>1.5-SNAPSHOT</version>
- </dependency>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-paymentprocess-contribution</artifactId>
+ <version>1.5-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>junit</groupId>
diff --git a/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursBooking.java b/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursBooking.java
index cc1cb960fe..611b4d8945 100644
--- a/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursBooking.java
+++ b/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursBooking.java
@@ -28,9 +28,12 @@ import scatours.common.TripItem;
*/
@Remotable
public interface SCAToursBooking {
- String newTrip();
- void addTripItem(String tripId, String tripItemId);
- void removeTripItem(String tripId, String tripItemId);
- TripItem[] getTripItems(String tripId);
- double getTotalPrice(String tripId);
+ String addCart();
+ String addTrip(String cartId);
+ void removeTrip(String cartId, String tripId);
+ void addTripItem(String cartId, String tripId, String tripItemId);
+ void removeTripItem(String cartId, String tripId, String tripItemId);
+ TripItem[] getTripItems(String cartId);
+ double getTotalPrice(String cartId);
+ void checkout(String name);
}
diff --git a/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursImpl.java b/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursImpl.java
index 2896997326..d36a6604ce 100644
--- a/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursImpl.java
+++ b/sandbox/travelsample/scatours-contribution/src/scatours/SCAToursImpl.java
@@ -19,28 +19,23 @@
package scatours;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import org.apache.tuscany.sca.data.collection.Entry;
-import org.apache.tuscany.sca.data.collection.NotFoundException;
-import org.osoa.sca.CallableReference;
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;
+import scatours.paymentprocess.PaymentProcess;
+import scatours.shoppingcart.ShoppingCart;
import scatours.travelcatalog.TravelCatalogSearch;
import scatours.tripbooking.TripBooking;
@@ -57,13 +52,20 @@ public class SCAToursImpl implements TravelCatalogSearch, SCAToursBooking{
@Reference
protected TripBooking tripBooking;
+ @Reference
+ protected ShoppingCart shoppingCart;
+
+ @Reference
+ protected PaymentProcess paymentProcess;
+
@Context
protected ComponentContext componentContext;
+ private Map<String,ShoppingCart> carts = new HashMap<String,ShoppingCart>();
private Map<String,TripBooking> trips = new HashMap<String,TripBooking>();
private Map<String, TripItem> searchItemsCache = new HashMap<String, TripItem>();
- // TravelSearch methods
+ // TravelCatalogSearch methods
public TripItem[] search(TripLeg tripLeg) {
@@ -75,34 +77,70 @@ public class SCAToursImpl implements TravelCatalogSearch, SCAToursBooking{
return searchItems;
}
- // TravelBooking methods
+ // SCAToursBooking methods
- public String newTrip(){
+ public String addCart(){
+ String cartId = UUID.randomUUID().toString();
+ ServiceReference<ShoppingCart> shoppingCart = componentContext.getServiceReference(ShoppingCart.class,
+ "shoppingCart");
+ shoppingCart.setConversationID(cartId);
+ carts.put(cartId, shoppingCart.getService());
+
+ return cartId;
+ }
+
+ public String addTrip(String cartId){
String tripId = UUID.randomUUID().toString();
ServiceReference<TripBooking> tripReference = componentContext.getServiceReference(TripBooking.class,
"tripBooking");
tripReference.setConversationID(tripId);
trips.put(tripId, tripReference.getService());
+
+ carts.get(cartId).addItem(tripId);
return tripId;
}
- public void addTripItem(String tripId, String tripItemId){
- trips.get(tripId).addTripItem(searchItemsCache.get(tripItemId));
+ public void removeTrip(String cartId, String tripId) {
+ carts.get(cartId).removeItem(tripId);
+ }
+
+ public void addTripItem(String cartId, String tripId, String tripItemId){
+ TripItem item = searchItemsCache.get(tripItemId);
+ TripItem itemCopy = new TripItem(item);
+ itemCopy.setTripId(tripId);
+ trips.get(tripId).addTripItem(itemCopy);
}
- public void removeTripItem(String tripId, String tripItemId){
+ public void removeTripItem(String cartId, String tripId, String tripItemId){
trips.get(tripId).removeTripItem(tripItemId);
}
- public TripItem[] getTripItems(String tripId) {
- return trips.get(tripId).getTripItems();
+ public TripItem[] getTripItems(String cartId) {
+ List<TripItem> returnTripItems = new ArrayList<TripItem>();
+
+ for( String tripId : carts.get(cartId).getItems()){
+ returnTripItems.addAll(Arrays.asList(trips.get(tripId).getTripItems()));
+ }
+
+ return returnTripItems.toArray(new TripItem[returnTripItems.size()]);
}
- public double getTotalPrice(String tripId){
- return trips.get(tripId).getTripPrice();
+ public double getTotalPrice(String cartId){
+ double total = 0.0;
+
+ for( String tripId : carts.get(cartId).getItems()){
+ total += trips.get(tripId).getTripPrice();
+ }
+
+ return total;
}
- public void bookTrip(String tripId) {
- trips.get(tripId).bookTrip();
+ public void checkout(String cartId){
+ // get users credentials. Hard coded for now but should
+ // come from the security context
+ String customerId = "Fred Bloggs";
+ float amount = (float)getTotalPrice(cartId);
+
+ paymentProcess.makePayment(customerId, amount);
}
}