summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/trunk/tutorials/travelsample/contributions
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/trunk/tutorials/travelsample/contributions')
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/pom.xml80
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/BlogPost.java68
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/AtomBlogFeedImpl.java124
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/BaseBlogFeedImpl.java88
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/GenericBlogFeedImpl.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/RSSBlogFeedImpl.java94
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/META-INF/sca-contribution.xml21
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/blog-feed.composite58
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/build.xml96
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/pom.xml125
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Bookings.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Checkout.java28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ApplClientImpl.java52
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ToursClientImpl.java47
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/META-INF/sca-contribution.xml26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-appl-client.composite40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-client.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-include-client.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksApplTestCase.java77
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java59
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplTestCase.java58
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/resources/jndi.properties39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/pom.xml91
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/Tours.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/impl/TourProviderImpl.java28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/goodvaluetrips/Trips.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Bookings.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Checkout.java28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Updates.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java49
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/scatours/impl/TripProviderImpl.java28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/META-INF/sca-contribution.xml27
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-appl.composite54
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl-include.composite33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl.composite34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours.composite43
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java66
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplTestCase.java65
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/pom.xml64
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/Calendar.java25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/impl/CalendarImpl.java47
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/java/scatours/calendar/CalendarTestCase.java57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/calendar.composite28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/car/build.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/car/pom.xml62
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarImpl.java91
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarInfo.java118
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/pom.xml56
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Book.java27
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Search.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/SearchCallback.java33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripItem.java242
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripLeg.java85
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/resources/META-INF/sca-contribution.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/build.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/maven-eclipse.xml8
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/pom.xml144
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java46
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/CreditCardPayment.wsdl134
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/creditcard.composite33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/definitions.xml36
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java100
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/build.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/pom.xml144
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java46
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/CreditCardPayment.wsdl134
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/creditcard.composite33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java100
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/build.xml31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/pom.xml130
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java46
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/CreditCardPayment.wsdl117
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/creditcard.composite33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java80
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/build.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/pom.xml66
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/resources/CreditCardPayment.wsdl134
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-deployables/web.composite43
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/WEB-INF/web.xml42
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/creditcard.jsp71
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/pom.xml51
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/currency-converter-corba.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/pom.xml83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/currency-converter-jms.composite37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/pom.xml65
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/META-INF/sca-deployables/web.composite34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/WEB-INF/web.xml42
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/currency-converter.jsp49
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/pom.xml51
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/currency-converter-rmi.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/build.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/pom.xml72
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/java/com/tuscanyscatours/currencyconverter/servlet/CurrencyConverterServlet.java73
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/META-INF/sca-deployables/web.composite34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/WEB-INF/web.xml52
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/currency-converter-ws.composite31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/CurrencyConverter.java33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/impl/CurrencyConverterImpl.java53
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/currency-converter.composite28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/build.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/pom.xml48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/java/scatours/client/TestClient.java40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/client.composite28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/build.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/pom.xml137
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java38
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/emailgateway.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/EmailGatewayTestCase.java76
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/client/impl/EmailGatewayClientImpl.java41
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/emailgateway-test.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/pom.xml80
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/FeedLogger.java30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/impl/FeedLoggerImpl.java99
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/META-INF/sca-contribution.xml21
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/feed-logger.composite40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/build.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/pom.xml62
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightImpl.java121
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightInfo.java140
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/pom.xml90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/META-INF/sca-contribution.xml28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/fullapp-bespoketrip.composite63
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/pom.xml90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/META-INF/sca-contribution.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/fullapp-coordination.composite72
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/pom.xml90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/fullapp-currency.composite28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/pom.xml90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/fullapp-packagedtrip.composite37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/pom.xml90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/META-INF/sca-contribution.xml26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/fullapp-shoppingcart.composite36
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/pom.xml90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/META-INF/sca-contribution.xml28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/fullapp-ui.composite58
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.html399
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.odgbin0 -> 11880 bytes
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.pngbin0 -> 16554 bytes
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/style.css135
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/pom.xml71
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/META-INF/sca-contribution.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help-pages.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHoliday.html34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHotel.html34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/MakingPayments.html34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/index.html59
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/build.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/pom.xml62
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelInfo.java118
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelManagement.java24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/impl/HotelImpl.java105
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/build.xml28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/pom.xml72
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionConversationClientImpl.java73
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionLocalClientImpl.java53
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionOneWayCallbackClientImpl.java78
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRemoteClientImpl.java64
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRequestResponseClientImpl.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionStatefulCallbackClientImpl.java98
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/META-INF/sca-contribution.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/client.composite90
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/META-INF/sca-contribution.xml26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/service.composite48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/build.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/pom.xml48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/java/scatours/client/impl/TestClientImpl.java47
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/client.composite29
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/pom.xml42
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/goodvaluetrips/Trips.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Bookings.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Checkout.java28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Updates.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java49
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/tours.composite46
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/pom.xml42
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/Trips.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/impl/TripProviderImpl.java28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/trips.composite30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/notification-corba.composite36
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/pom.xml56
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/notification-ejb.composite35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/notification-jms.composite41
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/notification-rmi.composite36
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/notification-ws.composite35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/build.xml22
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/pom.xml57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/Notification.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/impl/NotificationImpl.java58
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/smsgateway/SMSGateway.java30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/build.xml49
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/log4j.properties36
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/pom.xml203
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/CreditCardPayment.wsdl117
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.bpel164
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.composite40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/PaymentTestCase.java81
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/payment-client.composite33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/build.xml40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/pom.xml167
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/CreditCardPayment.wsdl116
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment.composite38
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment/PaymentImpl.groovy31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/PaymentTestCase.java82
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/payment-client.composite32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/build.xml35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/maven-eclipse.xml8
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/pom.xml176
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/Customer.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java115
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java74
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/CreditCardPayment.wsdl132
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/definitions.xml48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/payment.composite48
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/test/java/scatours/payment/PaymentTestCase.java85
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/build.xml35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/pom.xml167
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/Customer.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java115
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java69
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/CreditCardPayment.wsdl132
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/definitions.xml34
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/payment.composite46
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/test/java/scatours/payment/PaymentTestCase.java75
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/build.xml40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/pom.xml189
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java113
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java77
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl118
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite45
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/build.xml40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/pom.xml189
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java76
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/CreditCardPayment.wsdl118
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment-context.xml44
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/payment.composite35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/PaymentTestCase.java71
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/payment-client.composite31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/build.xml40
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/pom.xml189
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/Customer.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java57
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java115
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java77
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/CreditCardPayment.wsdl118
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/EmailGateway.wsdl89
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment-context.xml39
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/payment.composite35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/PaymentTestCase.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java37
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/payment-client.composite31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/build.xml30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/maven-eclipse.xml8
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/pom.xml88
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/java/scatours/client/TestClient.java38
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/client.composite28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/pom.xml98
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/build.xml28
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/pom.xml80
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursBooking.java31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursCart.java35
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursSearch.java32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/impl/SCAToursImpl.java84
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/resources/META-INF/sca-contribution.xml27
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/build.xml33
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/pom.xml119
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartCheckout.java26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartInitialize.java30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartStore.java41
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartUpdates.java30
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/CartStoreImpl.java70
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/ShoppingCartImpl.java104
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/Payment.wsdl83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/build.xml26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/pom.xml68
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/TravelCatalogSearch.java32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/impl/TravelCatalogImpl.java127
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/build.xml26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/pom.xml83
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripImpl.java94
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripInfo.java140
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/java/scatours/trip/TripTestCase.java68
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/definitions.xml32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/trip.composite31
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/build.xml26
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/pom.xml74
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/TripBooking.java32
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/impl/TripBookingImpl.java91
-rw-r--r--sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/resources/META-INF/sca-contribution.xml26
405 files changed, 21863 insertions, 0 deletions
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/build.xml
new file mode 100644
index 0000000000..2f0f6b12a5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-blog-feed" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/pom.xml
new file mode 100644
index 0000000000..c7f90cfba0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-blog-feed</artifactId>
+ <name>Apache Tuscany SCA Tours Blog Feed Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-rss-rome</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/BlogPost.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/BlogPost.java
new file mode 100644
index 0000000000..f93fe59b9d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/BlogPost.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.blog;
+
+import java.util.Date;
+
+/**
+ * Bean for blog posts.
+ */
+public class BlogPost {
+
+ private final String author;
+ private final String title;
+ private final String content;
+ private final Date updated;
+ private final String link;
+ private final String related;
+
+ public BlogPost(String author, String title, String content, Date updated, String link, String related) {
+ this.author = author;
+ this.title = title;
+ this.content = content;
+ this.updated = updated;
+ this.link = link;
+ this.related = related;
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public Date getUpdated() {
+ return updated;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public String getRelated() {
+ return related;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/AtomBlogFeedImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/AtomBlogFeedImpl.java
new file mode 100644
index 0000000000..b7a392f927
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/AtomBlogFeedImpl.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.blog.feed.impl;
+
+import java.util.List;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.factory.Factory;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.tuscany.sca.binding.atom.collection.NotFoundException;
+
+import com.tuscanyscatours.blog.BlogPost;
+
+/**
+ * An Atom feed that implements the org.apache.tuscany.sca.binding.atom.collection.Collection
+ * interface and uses the Atom APIs to construct the Atom feed.
+ */
+public class AtomBlogFeedImpl extends BaseBlogFeedImpl implements
+ org.apache.tuscany.sca.binding.atom.collection.Collection {
+
+ /**
+ * Gets an Atom feed containing all the blog posts.
+ *
+ * @return An Atom feed containing all the blog posts.
+ */
+ public Feed getFeed() {
+ // Create SCA Tours blog Atom feed
+ final Factory factory = Abdera.getNewFactory();
+ final Feed feed = factory.newFeed();
+ feed.setTitle(FEED_TITLE);
+ feed.setSubtitle(FEED_DESCRIPTION);
+ feed.addAuthor(FEED_AUTHOR);
+
+ // Get all blog posts and convert to Atom entries
+ final List<BlogPost> blogEntries = getAllBlogPosts();
+ for (BlogPost blogEntry : blogEntries) {
+ final Entry entry = factory.newEntry();
+ entry.setId(nextBlogID());
+ entry.addAuthor(blogEntry.getAuthor());
+ entry.setTitle(blogEntry.getTitle());
+ entry.setContentAsHtml(blogEntry.getContent());
+ entry.setUpdated(blogEntry.getUpdated());
+ entry.addLink(blogEntry.getLink());
+ feed.addEntry(entry);
+ }
+
+ return feed;
+ }
+
+ /**
+ * Query the feed.
+ *
+ * @param query The query
+ * @return Always returns null as method not implemented
+ */
+ public Feed query(String query) {
+ // Not implemented
+ return null;
+ }
+
+ /**
+ * Posts a new entry to the blog.
+ *
+ * @param entry The new entry
+ * @return Always returns null as method not implemented
+ */
+ public Entry post(Entry entry) {
+ // Not implemented
+ return null;
+ }
+
+ /**
+ * Gets the specified entry from the blog.
+ *
+ * @param id ID of the entry to get
+ * @return Not used
+ * @throws NotFoundException Always thrown as method not implemented
+ */
+ public Entry get(String id) throws NotFoundException {
+ // Not implemented
+ throw new NotFoundException("You are not allowed to update entries");
+ }
+
+ /**
+ * Updates the specified entry on the blog.
+ *
+ * @param id ID of the entry to update
+ * @param entry The new entry
+ * @throws NotFoundException Always thrown as method not implemented
+ */
+ public void put(String id, Entry entry) throws NotFoundException {
+ // Not implemented
+ throw new NotFoundException("You are not allowed to update entries");
+ }
+
+ /**
+ * Deletes the specified entry from the blog.
+ *
+ * @param id ID of the entry to delete
+ * @throws NotFoundException Always thrown as method not implemented
+ */
+ public void delete(String id) throws NotFoundException {
+ // Not implemented
+ throw new NotFoundException("You are not allowed to delete entries");
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/BaseBlogFeedImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/BaseBlogFeedImpl.java
new file mode 100644
index 0000000000..f132d340ea
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/BaseBlogFeedImpl.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.blog.feed.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import com.tuscanyscatours.blog.BlogPost;
+
+/**
+ * Base class for all blog feeds that provides the common methods
+ * that are shared by all the blog feed implementations.
+ */
+public abstract class BaseBlogFeedImpl {
+
+ /**
+ * Title of the blog.feed.
+ */
+ protected static final String FEED_TITLE = "Tuscany SCA Tours Blog Feed";
+
+ /**
+ * Description of the blog feed.
+ */
+ protected static final String FEED_DESCRIPTION = "Feed contianing the latest blog posts from Tuscany SCA Tours";
+
+ /**
+ * Author of the blog feed.
+ */
+ protected static final String FEED_AUTHOR = "SCA Tours CEO";
+
+ /**
+ * Used to generate unique IDs for the blog entries.
+ */
+ protected static final AtomicInteger ID_GEN = new AtomicInteger();
+
+ /**
+ * Generates the next blog entry ID.
+ *
+ * @return Next blog entry ID
+ */
+ protected String nextBlogID() {
+ return Integer.toString(ID_GEN.incrementAndGet());
+ }
+
+ /**
+ * Retrieves a list of all blog posts.
+ *
+ * @return A list of all blog posts.
+ */
+ public List<BlogPost> getAllBlogPosts() {
+ // Note: To keep things simple, we will just hard code a sample post.
+ // A proper implementation would load all blog posts from some resource
+ // such as files or a database.
+ List<BlogPost> blogEntries = new ArrayList<BlogPost>();
+
+ // Create a sample entry
+ final BlogPost samplePost =
+ new BlogPost(
+ FEED_AUTHOR,
+ "Apache Tuscany in Action book features SCA Tours",
+ "We are famous as SCA Tours has been featured in the Apache Tuscany in Action book published by Manning",
+ new Date(), "http://www.manning.com/laws/", null);
+
+ // Add sample post to the list of posts
+ blogEntries.add(samplePost);
+
+ return blogEntries;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/GenericBlogFeedImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/GenericBlogFeedImpl.java
new file mode 100644
index 0000000000..c427b658a4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/GenericBlogFeedImpl.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.blog.feed.impl;
+
+import java.util.List;
+
+import org.apache.tuscany.sca.data.collection.Entry;
+import org.apache.tuscany.sca.data.collection.Item;
+
+import com.tuscanyscatours.blog.BlogPost;
+
+/**
+ * Implementation of the blog feed that uses the Tuscany Data API so
+ * that it is independent of any Feed APIs such as Atom and RSS.
+ */
+public class GenericBlogFeedImpl extends BaseBlogFeedImpl {
+
+ /**
+ * Implementation of the getAll() method from the Tuscany API
+ * that will return all of the blog posts as generic Tuscany
+ * feed items.
+ *
+ * @return All blog entries
+ */
+ public Entry<Object, Object>[] getAll() {
+ final List<BlogPost> posts = getAllBlogPosts();
+
+ final Entry<Object, Object>[] entries = new Entry[posts.size()];
+ int i = 0;
+ for (BlogPost post : posts) {
+ entries[i++] = convertBlogPostToFeedItem(post);
+ }
+
+ return entries;
+ }
+
+ /**
+ * Converts a blog post to a Tuscany API feed item.
+ *
+ * @param post The blog post to convert
+ * @return The blog post as a Tuscany API feed item
+ */
+ private Entry<Object, Object> convertBlogPostToFeedItem(BlogPost post) {
+ // Convert Blog entry into an Item
+ final Item item =
+ new Item(post.getTitle(), post.getContent(), post.getLink(), post.getRelated(), post.getUpdated());
+
+ // Add item to entry
+ final Entry<Object, Object> entry = new Entry<Object, Object>(nextBlogID(), item);
+
+ return entry;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/RSSBlogFeedImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/RSSBlogFeedImpl.java
new file mode 100644
index 0000000000..efccffef67
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/java/com/tuscanyscatours/blog/feed/impl/RSSBlogFeedImpl.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.blog.feed.impl;
+
+import java.util.List;
+
+import org.apache.tuscany.sca.binding.rss.collection.NotFoundException;
+
+import com.sun.syndication.feed.synd.SyndContent;
+import com.sun.syndication.feed.synd.SyndContentImpl;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndEntryImpl;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndFeedImpl;
+import com.tuscanyscatours.blog.BlogPost;
+
+/**
+ * An RSS feed that implements the org.apache.tuscany.sca.binding.rss.collection.Collection
+ * interface and uses the RSS APIs to construct the RSS feed.
+ */
+public class RSSBlogFeedImpl extends BaseBlogFeedImpl implements
+ org.apache.tuscany.sca.binding.rss.collection.Collection {
+
+ /**
+ * Gets an RSS feed containing all the blog posts.
+ *
+ * @return An RSS feed containing all the blog posts.
+ */
+ public SyndFeed getFeed() {
+ // Create SCA Tours blog RSS feed
+ SyndFeed feed = new SyndFeedImpl();
+ feed.setTitle(FEED_TITLE);
+ feed.setDescription(FEED_DESCRIPTION);
+ feed.setAuthor(FEED_AUTHOR);
+
+ // Get all blog posts and convert to RSS entries
+ final List<BlogPost> blogEntries = getAllBlogPosts();
+ for (BlogPost blogEntry : blogEntries) {
+ SyndEntry entry = new SyndEntryImpl();
+ entry.setUri(nextBlogID());
+ entry.setAuthor(blogEntry.getAuthor());
+ entry.setTitle(blogEntry.getTitle());
+
+ SyndContent content = new SyndContentImpl();
+ content.setType("text");
+ content.setValue(blogEntry.getContent());
+
+ entry.setPublishedDate(blogEntry.getUpdated());
+ entry.setLink(blogEntry.getLink());
+
+ feed.getEntries().add(entry);
+ }
+
+ return feed;
+ }
+
+ /**
+ * Query the feed.
+ *
+ * @param query The query
+ * @return Always returns null as method not implemented
+ */
+ public SyndFeed query(String query) {
+ // Not implemented
+ return null;
+ }
+
+ public SyndEntry get(String id) throws NotFoundException {
+ // Not implemented
+ return null;
+ }
+
+ public List<SyndEntry> getAll() throws NotFoundException {
+ // Not implemented
+ return null;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b4152d6e3f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,21 @@
+<?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">
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/blog-feed.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/blog-feed.composite
new file mode 100644
index 0000000000..751fd33cd2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/blog-feed/src/main/resources/blog-feed.composite
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="blogFeed">
+
+ <!-- Example that shows using the Tuscany Data APIs to create a feed that -->
+ <!-- is independent of the Feed API -->
+ <service name="BlogAtom" promote="BlogFeed">
+ <tuscany:binding.atom uri="http://localhost:8090/BlogAtom"/>
+ </service>
+
+ <service name="BlogRSS" promote="BlogFeed">
+ <tuscany:binding.rss uri="http://localhost:8090/BlogRSS"/>
+ </service>
+
+ <component name="BlogFeed">
+ <implementation.java class="com.tuscanyscatours.blog.feed.impl.GenericBlogFeedImpl"/>
+ </component>
+
+ <!-- Example that shows using the Atom Collections API to create a feed that -->
+ <!-- uses the Atom APIs -->
+ <service name="BlogAtomAPIs" promote="BlogAtom">
+ <tuscany:binding.atom uri="http://localhost:8090/BlogAtomAPIs"/>
+ </service>
+
+ <component name="BlogAtom">
+ <implementation.java class="com.tuscanyscatours.blog.feed.impl.AtomBlogFeedImpl"/>
+ </component>
+
+ <!-- Example that shows using the RSS Collections API to create a feed that -->
+ <!-- uses the RSS APIs -->
+ <service name="BlogRSSAPIs" promote="BlogRSS">
+ <tuscany:binding.rss uri="http://localhost:8090/BlogRSSAPIs"/>
+ </service>
+
+ <component name="BlogRSS">
+ <implementation.java class="com.tuscanyscatours.blog.feed.impl.RSSBlogFeedImpl"/>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/build.xml
new file mode 100644
index 0000000000..33aedec1fc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/build.xml
@@ -0,0 +1,96 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contributions" default="compile">
+
+ <target name="compile">
+ <antcall target="allsubdirs">
+ <param name="target" value="compile"/>
+ </antcall>
+ </target>
+
+ <target name="test">
+ <antcall target="allsubdirs">
+ <param name="target" value="test"/>
+ </antcall>
+ </target>
+
+ <target name="clean">
+ <antcall target="allsubdirs">
+ <param name="target" value="clean"/>
+ </antcall>
+ </target>
+
+ <target name="allsubdirs">
+ <ant dir="blog-feed" target="${target}"/>
+ <ant dir="introducing-trips" target="${target}"/> <!--needed by buildingblocks-->
+ <ant dir="buildingblocks" target="${target}"/>
+ <ant dir="buildingblocks-client" target="${target}"/>
+ <ant dir="calendar" target="${target}"/>
+ <ant dir="common" target="${target}"/> <!--needed by car-->
+ <ant dir="car" target="${target}"/>
+ <ant dir="creditcard-payment-jaxb" target="${target}"/>
+ <ant dir="creditcard-payment-jaxb-policy" target="${target}"/>
+ <ant dir="creditcard-payment-sdo" target="${target}"/>
+ <ant dir="creditcard-payment-webapp" target="${target}"/>
+ <ant dir="currency" target="${target}"/>
+ <ant dir="currency-corba" target="${target}"/>
+ <ant dir="currency-jms" target="${target}"/>
+ <ant dir="currency-jsp" target="${target}"/>
+ <ant dir="currency-rmi" target="${target}"/>
+ <ant dir="currency-servlet" target="${target}"/>
+ <ant dir="currency-ws" target="${target}"/>
+ <ant dir="payment-java" target="${target}"/> <!--needed by databinding-client-->
+ <ant dir="databinding-client" target="${target}"/>
+ <ant dir="emailgateway" target="${target}"/>
+ <ant dir="feed-logger" target="${target}"/>
+ <ant dir="flight" target="${target}"/>
+ <ant dir="fullapp-bespoketrip" target="${target}"/>
+ <ant dir="fullapp-coordination" target="${target}"/>
+ <ant dir="fullapp-currency" target="${target}"/>
+ <ant dir="fullapp-packagedtrip" target="${target}"/>
+ <ant dir="fullapp-shoppingcart" target="${target}"/>
+ <ant dir="fullapp-ui" target="${target}"/>
+ <ant dir="help-pages" target="${target}"/>
+ <ant dir="hotel" target="${target}"/>
+ <ant dir="shoppingcart" target="${target}"/> <!--needed by interaction-client-->
+ <ant dir="interaction-client" target="${target}"/>
+ <ant dir="interaction-service-remote" target="${target}"/>
+ <ant dir="introducing-tours" target="${target}"/> <!--needed by introducing-client-->
+ <ant dir="introducing-client" target="${target}"/>
+ <ant dir="notification" target="${target}"/>
+ <ant dir="notification-corba" target="${target}"/>
+ <ant dir="notification-ejb" target="${target}"/>
+ <ant dir="notification-jms" target="${target}"/>
+ <ant dir="notification-rmi" target="${target}"/>
+ <ant dir="notification-ws" target="${target}"/>
+ <ant dir="payment-java-policy" target="${target}"/>
+ <ant dir="payment-bpel" target="${target}"/>
+ <ant dir="payment-groovy" target="${target}"/>
+ <ant dir="payment-spring" target="${target}"/>
+ <ant dir="payment-spring-policy" target="${target}"/>
+ <ant dir="payment-spring-scatag" target="${target}"/>
+ <ant dir="policy-client" target="${target}"/>
+ <ant dir="travelcatalog" target="${target}"/> <!--needed by scatours-->
+ <ant dir="tripbooking" target="${target}"/> <!--needed by scatours-->
+ <ant dir="scatours" target="${target}"/>
+ <ant dir="trip" target="${target}"/>
+ </target>
+
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/build.xml
new file mode 100644
index 0000000000..9ea7438516
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-buildingblocks-client" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/pom.xml
new file mode 100644
index 0000000000..20a5d8bce4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/pom.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-buildingblocks-client</artifactId>
+ <name>Apache Tuscany SCA Tours Building Blocks Client Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-buildingblocks</artifactId>
+ <version>${pom.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-introducing-trips</artifactId>
+ <version>${pom.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jms-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jms-asf</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-all</artifactId>
+ <version>5.2.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-web-demo</artifactId>
+ </exclusion>
+ </exclusions>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Bookings.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Bookings.java
new file mode 100644
index 0000000000..e5e994b73c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Bookings.java
@@ -0,0 +1,26 @@
+/*
+ * 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;
+
+@Remotable
+public interface Bookings {
+ String newBooking(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Checkout.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Checkout.java
new file mode 100644
index 0000000000..519b7779fa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/Checkout.java
@@ -0,0 +1,28 @@
+/*
+ * 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.math.BigDecimal;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Checkout {
+ void makePayment(BigDecimal amount, String cardInfo);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ApplClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ApplClientImpl.java
new file mode 100644
index 0000000000..278673c67d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ApplClientImpl.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.impl;
+
+import java.math.BigDecimal;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import scatours.Bookings;
+import scatours.Checkout;
+
+@Service(Runnable.class)
+public class ApplClientImpl {
+ @Reference
+ protected Bookings bookings1, bookings2;
+
+ @Reference
+ protected Checkout checkout1, checkout2;
+
+ public ApplClientImpl() {
+ }
+
+ public void run() {
+ String bookingCode = bookings1.newBooking("FS1APR4", 1);
+ System.out.println("Booking code is " + bookingCode);
+
+ checkout1.makePayment(new BigDecimal("1995.00"), "1234567843218765 10/10");
+
+ bookingCode = bookings2.newBooking("AC3MAY9", 2);
+ System.out.println("Booking code is " + bookingCode);
+
+ checkout2.makePayment(new BigDecimal("2295.00"), "9876123456784321 11/11");
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ToursClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ToursClientImpl.java
new file mode 100644
index 0000000000..16934872b9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/java/scatours/impl/ToursClientImpl.java
@@ -0,0 +1,47 @@
+/*
+ * 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.impl;
+
+import java.math.BigDecimal;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import scatours.Bookings;
+import scatours.Checkout;
+
+@Service(Runnable.class)
+public class ToursClientImpl {
+ @Reference
+ protected Bookings bookings;
+
+ @Reference
+ protected Checkout checkout;
+
+ public ToursClientImpl() {
+ }
+
+ public void run() {
+ String bookingCode = bookings.newBooking("FS1APR4", 1);
+ System.out.println("Booking code is " + bookingCode);
+
+ checkout.makePayment(new BigDecimal("1995.00"), "1234567843218765 10/10");
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..e3f6effcee
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/META-INF/sca-contribution.xml
@@ -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"
+ xmlns:tst="http://tuscanyscatours.com/">
+ <import namespace="http://tuscanyscatours.com/" />
+ <deployable composite="tst:ToursApplClient" />
+ <deployable composite="tst:ToursImplClient" />
+ <deployable composite="tst:ToursImplIncludeClient" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-appl-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-appl-client.composite
new file mode 100644
index 0000000000..b9f9d59f43
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-appl-client.composite
@@ -0,0 +1,40 @@
+<?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://tuscanyscatours.com/"
+ xmlns:tst="http://tuscanyscatours.com/"
+ name="ToursApplClient">
+
+ <component name="ApplClient">
+ <implementation.java class="scatours.impl.ApplClientImpl" />
+ <reference name="bookings1">
+ <binding.ws uri="http://localhost:8081/BookTrip" />
+ </reference>
+ <reference name="checkout1">
+ <binding.ws uri="http://localhost:8081/Checkout" />
+ </reference>
+ <reference name="bookings2">
+ <binding.jms uri="jms:BookTrip" />
+ </reference>
+ <reference name="checkout2">
+ <binding.jms uri="jms:Checkout" />
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-client.composite
new file mode 100644
index 0000000000..f8f0b3d4d1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-client.composite
@@ -0,0 +1,32 @@
+<?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://tuscanyscatours.com/"
+ xmlns:tst="http://tuscanyscatours.com/"
+ name="ToursImplClient">
+
+ <component name="ToursClient">
+ <implementation.java class="scatours.impl.ToursClientImpl" />
+ <reference name="bookings" target="MyTours/BookTrip" />
+ <reference name="checkout" target="MyTours/Checkout" />
+ </component>
+
+ <include name="tst:ToursImpl" />
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-include-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-include-client.composite
new file mode 100644
index 0000000000..7310d0540d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/main/resources/tours-impl-include-client.composite
@@ -0,0 +1,32 @@
+<?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://tuscanyscatours.com/"
+ xmlns:tst="http://tuscanyscatours.com/"
+ name="ToursImplIncludeClient">
+
+ <component name="ToursClient">
+ <implementation.java class="scatours.impl.ToursClientImpl" />
+ <reference name="bookings" target="MyTours/BookTrip" />
+ <reference name="checkout" target="MyTours/Checkout" />
+ </component>
+
+ <include name="tst:ToursImplInclude" />
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksApplTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksApplTestCase.java
new file mode 100644
index 0000000000..2cf08ec420
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksApplTestCase.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours;
+
+import org.apache.activemq.broker.BrokerService;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests the Building Blocks Composite Application scenario
+ */
+public class BuildingBlocksApplTestCase {
+
+ private BrokerService jmsBroker;
+ private SCANode node1, node2;
+
+ @Before
+ public void startServer() throws Exception {
+ jmsBroker = new BrokerService();
+ jmsBroker.setPersistent(false);
+ jmsBroker.setUseJmx(false);
+ jmsBroker.addConnector("tcp://localhost:61619");
+
+ node1 = SCANodeFactory.newInstance().createSCANode("tours-appl.composite",
+ new SCAContribution("introducing-trips", "../introducing-trips/target/classes"),
+ new SCAContribution("buildingblocks", "../buildingblocks/target/classes"));
+
+ node2 = SCANodeFactory.newInstance().createSCANode("tours-appl-client.composite",
+ new SCAContribution("buildingblocks-client", "./target/classes"));
+
+ jmsBroker.start();
+ node1.start();
+ node2.start();
+ }
+
+ @Test
+ public void testAppl() {
+ Runnable client = ((SCAClient)node2).getService(Runnable.class, "ApplClient/Runnable");
+ client.run();
+ }
+
+ @After
+ public void stopServer() throws Exception {
+ if (node2 != null) {
+ node2.stop();
+ }
+ if (node1 != null) {
+ node1.stop();
+ }
+ if (jmsBroker != null) {
+ jmsBroker.stop();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java
new file mode 100644
index 0000000000..ad48db5616
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java
@@ -0,0 +1,59 @@
+/*
+ * 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.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests the Building Blocks Composite Implementation Include scenario
+ */
+public class BuildingBlocksImplIncludeTestCase {
+
+ private SCANode node;
+
+ @Before
+ public void startServer() throws Exception {
+ node = SCANodeFactory.newInstance().createSCANode("tours-impl-include-client.composite",
+ new SCAContribution("introducing-trips", "../introducing-trips/target/classes"),
+ new SCAContribution("buildingblocks", "../buildingblocks/target/classes"),
+ new SCAContribution("buildingblocks-client", "./target/classes"));
+
+ node.start();
+ }
+
+ @Test
+ public void testImplInclude() {
+ Runnable client = ((SCAClient)node).getService(Runnable.class, "ToursClient/Runnable");
+ client.run();
+ }
+
+ @After
+ public void stopServer() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplTestCase.java
new file mode 100644
index 0000000000..c4cffa3e02
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/java/scatours/BuildingBlocksImplTestCase.java
@@ -0,0 +1,58 @@
+/*
+ * 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.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests the Building Blocks Composite Implementation scenario
+ */
+public class BuildingBlocksImplTestCase {
+
+ private SCANode node;
+
+ @Before
+ public void startServer() throws Exception {
+ node = SCANodeFactory.newInstance().createSCANode("tours-impl-client.composite",
+ new SCAContribution("buildingblocks", "../buildingblocks/target/classes"),
+ new SCAContribution("buildingblocks-client", "./target/classes"));
+
+ node.start();
+ }
+
+ @Test
+ public void testImpl() {
+ Runnable client = ((SCAClient)node).getService(Runnable.class, "ToursClient/Runnable");
+ client.run();
+ }
+
+ @After
+ public void stopServer() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/resources/jndi.properties b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/resources/jndi.properties
new file mode 100644
index 0000000000..88270fd1e0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks-client/src/test/resources/jndi.properties
@@ -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.
+## ---------------------------------------------------------------------------
+
+# START SNIPPET: jndi
+
+java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
+
+# use the following property to configure the default connector
+java.naming.provider.url = vm://localhost?broker.persistent=false
+
+# use the following property to specify the JNDI name the connection factory
+# should appear as.
+#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry
+connectionFactoryNames = ConnectionFactory
+
+# register some queues in JNDI using the form
+# queue.[jndiName] = [physicalName]
+queue.BookTrip = BookTripRequestQueue
+queue.Checkout = CheckoutRequestQueue
+
+# register some topics in JNDI using the form
+# topic.[jndiName] = [physicalName]
+#topic.MyTopic = example.MyTopic
+
+# END SNIPPET: jndi
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/build.xml
new file mode 100644
index 0000000000..1e23144229
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-buildingblocks" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/pom.xml
new file mode 100644
index 0000000000..32985041a7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-buildingblocks</artifactId>
+ <name>Apache Tuscany SCA Tours Building Blocks Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jms-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-introducing-trips</artifactId>
+ <version>${pom.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/Tours.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/Tours.java
new file mode 100644
index 0000000000..38ddc1f099
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/Tours.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.budgettours;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Tours {
+ String checkAvailability(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/impl/TourProviderImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/impl/TourProviderImpl.java
new file mode 100644
index 0000000000..8e48625f0c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/budgettours/impl/TourProviderImpl.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.budgettours.impl;
+
+import com.budgettours.Tours;
+
+public class TourProviderImpl implements Tours {
+ public String checkAvailability(String trip, int people) {
+ // call non-SCA code to reserve trip and return booking code
+ return "5Q87X";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/goodvaluetrips/Trips.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/goodvaluetrips/Trips.java
new file mode 100644
index 0000000000..365a210368
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/goodvaluetrips/Trips.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.goodvaluetrips;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Trips {
+ String checkAvailability(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Bookings.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Bookings.java
new file mode 100644
index 0000000000..9d54d46bb6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Bookings.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Bookings {
+ String newBooking(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Checkout.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Checkout.java
new file mode 100644
index 0000000000..29c84d2bc0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Checkout.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import java.math.BigDecimal;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Checkout {
+ void makePayment(BigDecimal amount, String cardInfo);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Updates.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Updates.java
new file mode 100644
index 0000000000..e33b0399cb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/Updates.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Updates {
+ void addTrip(String resCode);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java
new file mode 100644
index 0000000000..629ea7b5ec
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.impl;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.tuscanyscatours.Checkout;
+import com.tuscanyscatours.Updates;
+
+public class ShoppingCartImpl implements Checkout, Updates {
+ private static List<String> bookedTrips = new ArrayList<String>();
+
+ protected String currency = "USD";
+
+ public void makePayment(BigDecimal amount, String cardInfo) {
+ System.out.print("Charged " + currency + " " + amount
+ + " to card "
+ + cardInfo
+ + " for "
+ + (bookedTrips.size() > 1 ? "trips" : "trip"));
+ for (String trip : bookedTrips) {
+ System.out.print(" " + trip);
+ }
+ System.out.println();
+ bookedTrips.clear();
+ }
+
+ public void addTrip(String resCode) {
+ bookedTrips.add(resCode);
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java
new file mode 100644
index 0000000000..f2884f87c5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.impl;
+
+import org.osoa.sca.annotations.Reference;
+
+import com.goodvaluetrips.Trips;
+import com.tuscanyscatours.Bookings;
+import com.tuscanyscatours.Updates;
+
+public class TripBookingImpl implements Bookings {
+ @Reference
+ protected Trips mytrips;
+
+ @Reference
+ protected Updates cart;
+
+ public String newBooking(String trip, int people) {
+ String resCode = mytrips.checkAvailability(trip, people);
+ cart.addTrip(resCode);
+ return "GV" + resCode;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/scatours/impl/TripProviderImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/scatours/impl/TripProviderImpl.java
new file mode 100644
index 0000000000..a95f01c519
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/java/scatours/impl/TripProviderImpl.java
@@ -0,0 +1,28 @@
+/*
+ * 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.impl;
+
+import com.goodvaluetrips.Trips;
+
+public class TripProviderImpl implements Trips {
+ public String checkAvailability(String trip, int people) {
+ // scaffolded test code to return an arbitrary booking code
+ return "7S09Z";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..028c41e415
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tst="http://tuscanyscatours.com/">
+ <import namespace="http://goodvaluetrips.com/" />
+ <export namespace="http://tuscanyscatours.com/" />
+ <deployable composite="tst:ToursAppl" />
+ <deployable composite="tst:ToursImpl" />
+ <deployable composite="tst:ToursImplInclude" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-appl.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-appl.composite
new file mode 100644
index 0000000000..8733c79c5d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-appl.composite
@@ -0,0 +1,54 @@
+<?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://tuscanyscatours.com/"
+ xmlns:bb="http://bb.tuscanyscatours.com/"
+ xmlns:gvt="http://goodvaluetrips.com/"
+ name="ToursAppl">
+
+ <component name="WSTours">
+ <implementation.composite name="bb:Tours" />
+ <service name="BookTrip">
+ <binding.ws uri="http://localhost:8081/BookTrip" />
+ </service>
+ <service name="Checkout">
+ <binding.ws uri="http://localhost:8081/Checkout" />
+ </service>
+ <reference name="trips" target="TripProvider/Trips" />
+ </component>
+
+ <component name="JMSTours">
+ <implementation.composite name="bb:Tours" />
+ <service name="BookTrip">
+ <binding.jms uri="jms:BookTrip" />
+ </service>
+ <service name="Checkout">
+ <binding.jms uri="jms:Checkout" />
+ </service>
+ <reference name="trips" target="TourProvider/Tours" />
+ </component>
+
+ <include name="gvt:Trips" />
+
+ <component name="TourProvider">
+ <implementation.java class="com.budgettours.impl.TourProviderImpl" />
+ <service name="Tours" />
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl-include.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl-include.composite
new file mode 100644
index 0000000000..4080523309
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl-include.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ xmlns:bb="http://bb.tuscanyscatours.com/"
+ xmlns:gvt="http://goodvaluetrips.com/"
+ name="ToursImplInclude">
+
+ <component name="MyTours">
+ <implementation.composite name="bb:Tours" />
+ <reference name="trips" target="TripProvider/Trips" />
+ <property name="currency">GBP</property>
+ </component>
+
+ <include name="gvt:Trips" />
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl.composite
new file mode 100644
index 0000000000..1d82858f22
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours-impl.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ xmlns:bb="http://bb.tuscanyscatours.com/"
+ name="ToursImpl">
+
+ <component name="MyTours">
+ <implementation.composite name="bb:Tours" />
+ <reference name="trips" target="TripProvider/Trips" />
+ <property name="currency">GBP</property>
+ </component>
+
+ <component name="TripProvider">
+ <implementation.java class="scatours.impl.TripProviderImpl" />
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours.composite
new file mode 100644
index 0000000000..b66d2344cd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/main/resources/tours.composite
@@ -0,0 +1,43 @@
+<?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://bb.tuscanyscatours.com/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ name="Tours">
+
+ <service name="BookTrip" promote="TripBooking/Bookings" />
+ <service name="Checkout" promote="ShoppingCart/Checkout" />
+ <reference name="trips" promote="TripBooking/mytrips" />
+ <property name="currency" type="xs:string">USD</property>
+
+ <component name="TripBooking">
+ <implementation.java class="com.tuscanyscatours.impl.TripBookingImpl" />
+ <service name="Bookings" />
+ <reference name="mytrips" />
+ <reference name="cart" target="ShoppingCart/Updates" />
+ </component>
+
+ <component name="ShoppingCart">
+ <implementation.java class="com.tuscanyscatours.impl.ShoppingCartImpl"/>
+ <service name="Updates" />
+ <service name="Checkout" />
+ <property name="currency" source="$currency"/>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java
new file mode 100644
index 0000000000..ccdd2a73bd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplIncludeTestCase.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours;
+
+import java.math.BigDecimal;
+
+import com.tuscanyscatours.Bookings;
+import com.tuscanyscatours.Checkout;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests the Building Blocks Composite Implementation Include scenario
+ */
+public class BuildingBlocksImplIncludeTestCase {
+
+ private SCANode node;
+
+ @Before
+ public void startServer() throws Exception {
+ node = SCANodeFactory.newInstance().createSCANode("tours-impl-include.composite",
+ new SCAContribution("introducing-trips", "../introducing-trips/target/classes"),
+ new SCAContribution("buildingblocks", "./target/classes"));
+ node.start();
+ }
+
+ @Test
+ public void testImplInclude() {
+ Bookings bookings = ((SCAClient)node).getService(Bookings.class, "MyTours/BookTrip");
+ String bookingCode = bookings.newBooking("FS1APR4", 1);
+ System.out.println("Booking code is " + bookingCode);
+
+ Checkout checkout = ((SCAClient)node).getService(Checkout.class, "MyTours/Checkout");
+ checkout.makePayment(new BigDecimal("1995.00"), "1234567801234567 11/10");
+ }
+
+ @After
+ public void stopServer() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplTestCase.java
new file mode 100644
index 0000000000..35271bc5aa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/buildingblocks/src/test/java/scatours/BuildingBlocksImplTestCase.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours;
+
+import java.math.BigDecimal;
+
+import com.tuscanyscatours.Bookings;
+import com.tuscanyscatours.Checkout;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests the Building Blocks Composite Implementation scenario
+ */
+public class BuildingBlocksImplTestCase {
+
+ private SCANode node;
+
+ @Before
+ public void startServer() throws Exception {
+ node = SCANodeFactory.newInstance().createSCANode("tours-impl.composite",
+ new SCAContribution("buildingblocks", "./target/classes"));
+ node.start();
+ }
+
+ @Test
+ public void testImpl() {
+ Bookings bookings = ((SCAClient)node).getService(Bookings.class, "MyTours/BookTrip");
+ String bookingCode = bookings.newBooking("FS1APR4", 1);
+ System.out.println("Booking code is " + bookingCode);
+
+ Checkout checkout = ((SCAClient)node).getService(Checkout.class, "MyTours/Checkout");
+ checkout.makePayment(new BigDecimal("1995.00"), "1234567843218765 10/10");
+ }
+
+ @After
+ public void stopServer() throws Exception {
+ if (node != null) {
+ node.stop();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/build.xml
new file mode 100644
index 0000000000..ae6a47dafb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-calendar" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/pom.xml
new file mode 100644
index 0000000000..489f26240c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-calendar</artifactId>
+ <name>Apache Tuscany SCA Tours Calendar Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-node-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/Calendar.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/Calendar.java
new file mode 100644
index 0000000000..daa5127511
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/Calendar.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.calendar;
+
+public interface Calendar {
+
+ String getEndDate(String startDate, int duration);
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/impl/CalendarImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/impl/CalendarImpl.java
new file mode 100644
index 0000000000..4e6e7b161b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/java/com/tuscanyscatours/calendar/impl/CalendarImpl.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.calendar.impl;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+import com.tuscanyscatours.calendar.Calendar;
+
+/**
+ * An implementation of the Calendar service
+ */
+public class CalendarImpl implements Calendar {
+
+ public String getEndDate(String startDate, int duration) {
+ String returnDate = "Invalid Date";
+
+ try {
+ Date date = DateFormat.getInstance().parse(startDate);
+ java.util.Calendar calendar = java.util.Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.add(java.util.Calendar.DATE, duration);
+ returnDate = DateFormat.getInstance().format(calendar.getTime());
+ } catch (Exception ex) {
+ // do nothing
+ System.out.println(ex.toString());
+ }
+
+ return returnDate;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..86f28d7423
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="com.tuscanyscatours.calendar" />
+ <export.java package="com.tuscanyscatours.calendar.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/java/scatours/calendar/CalendarTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/java/scatours/calendar/CalendarTestCase.java
new file mode 100644
index 0000000000..8e0f003c4b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/java/scatours/calendar/CalendarTestCase.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package scatours.calendar;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.tuscanyscatours.calendar.Calendar;
+
+/**
+ * This shows how to test the Calculator service component.
+ */
+public class CalendarTestCase {
+
+ private SCANode node;
+
+ @Before
+ public void startNode() throws Exception {
+ node =
+ SCANodeFactory.newInstance().createSCANode("calendar.composite",
+ new SCAContribution("calendar", "./target/classes"),
+ new SCAContribution("calendar-test", "./target/test-classes"));
+ node.start();
+ }
+
+ @Test
+ public void testCalendar() throws Exception {
+ Calendar calendar = ((SCAClient)node).getService(Calendar.class, "Calendar");
+ System.out.println(calendar.getEndDate("07/10/96 04:05", 3));
+ }
+
+ @After
+ public void stopNode() throws Exception {
+ node.stop();
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..e57bf783fc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.calendar" />
+ <import.java package="com.tuscanyscatours.calendar.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/calendar.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/calendar.composite
new file mode 100644
index 0000000000..076eed15b2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/calendar/src/test/resources/calendar.composite
@@ -0,0 +1,28 @@
+<?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://tuscanyscatours.com/"
+ name="calendar">
+
+ <component name="Calendar">
+ <implementation.java class="com.tuscanyscatours.calendar.impl.CalendarImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/build.xml
new file mode 100644
index 0000000000..46392d4b24
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/build.xml
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-car" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/pom.xml
new file mode 100644
index 0000000000..30ce5d7bb1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/pom.xml
@@ -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>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-car</artifactId>
+ <name>Apache Tuscany SCA Tours Car Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarImpl.java
new file mode 100644
index 0000000000..f75c772d48
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarImpl.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.car.impl;
+
+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 com.tuscanyscatours.common.Book;
+import com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+/**
+ * An implementation of the Car service
+ */
+@Scope("STATELESS")
+@Service(interfaces = {Search.class, Book.class})
+public class CarImpl implements Search, Book {
+
+ private List<CarInfo> cars = new ArrayList<CarInfo>();
+
+ @Callback
+ protected SearchCallback searchCallback;
+
+ @Init
+ public void init() {
+ cars.add(new CarInfo("Premier Cars", "BMW 5 Series", "FLR", "06/12/09", "5", 100.00, "EUR",
+ "http://localhost:8085/tbd"));
+ cars.add(new CarInfo("Premier Cars", "Ford Focus", "FLR", "06/12/09", "4", 60.00, "EUR",
+ "http://localhost:8085/tbd"));
+ }
+
+ public TripItem[] searchSynch(TripLeg tripLeg) {
+ List<TripItem> items = new ArrayList<TripItem>();
+
+ // find available hotels
+ for (CarInfo car : cars) {
+ if (car.getLocation().equals(tripLeg.getToLocation())) {
+ TripItem item =
+ new TripItem("", "", TripItem.CAR, car.getName(), car.getDescription(), car.getLocation(), tripLeg
+ .getFromDate(), tripLeg.getToDate(), car.getPricePerDay(), car.getCurrency(), car.getLink());
+ items.add(item);
+ }
+ }
+
+ return items.toArray(new TripItem[items.size()]);
+ }
+
+ public void searchAsynch(TripLeg tripLeg) {
+ System.out.println("Starting car search");
+
+ try {
+ Thread.sleep(4000);
+ } catch (Exception ex) {
+ // do nothing
+ }
+
+ // return available hotels
+ searchCallback.searchResults(searchSynch(tripLeg));
+ }
+
+ public int getPercentComplete() {
+ return 100;
+ }
+
+ public String book(TripItem tripItem) {
+ return "car1";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarInfo.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarInfo.java
new file mode 100644
index 0000000000..c373079ac1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/java/com/tuscanyscatours/car/impl/CarInfo.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.car.impl;
+
+public class CarInfo {
+
+ private String name;
+ private String description;
+ private String location;
+ private String date;
+ private String seats;
+ private double pricePerDay;
+ private String currency;
+ private String link;
+
+ public CarInfo() {
+ }
+
+ public CarInfo(String name,
+ String description,
+ String location,
+ String date,
+ String seats,
+ double pricePerDay,
+ String currency,
+ String link) {
+
+ this.name = name;
+ this.description = description;
+ this.location = location;
+ this.date = date;
+ this.seats = seats;
+ this.pricePerDay = pricePerDay;
+ this.currency = currency;
+ this.link = link;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getSeats() {
+ return seats;
+ }
+
+ public void setSeats(String seats) {
+ this.seats = seats;
+ }
+
+ public double getPricePerDay() {
+ return pricePerDay;
+ }
+
+ public void setPricePerDay(double pricePerDay) {
+ this.pricePerDay = pricePerDay;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..eb9ffba20d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/car/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.common"/>
+ <export.java package="com.tuscanyscatours.car.impl"/>
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/build.xml
new file mode 100644
index 0000000000..85cec507ff
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-common" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/pom.xml
new file mode 100644
index 0000000000..48d83ceba8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-common</artifactId>
+ <name>Apache Tuscany SCA Tours Common Artefacts Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Book.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Book.java
new file mode 100644
index 0000000000..47b6f50bec
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Book.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.common;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Book {
+ String book(TripItem tripItem);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Search.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Search.java
new file mode 100644
index 0000000000..db0377a779
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/Search.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.common;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.OneWay;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Conversational
+@Callback(SearchCallback.class)
+public interface Search {
+ TripItem[] searchSynch(TripLeg tripLeg);
+
+ @OneWay
+ void searchAsynch(TripLeg tripLeg);
+
+ int getPercentComplete();
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/SearchCallback.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/SearchCallback.java
new file mode 100644
index 0000000000..ddab27c3dd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/SearchCallback.java
@@ -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 com.tuscanyscatours.common;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Conversational
+public interface SearchCallback {
+ @EndsConversation
+ void searchResults(TripItem[] items);
+
+ void setPercentComplete(String searchComponent, int percentComplete);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripItem.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripItem.java
new file mode 100644
index 0000000000..2f2a6299f9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripItem.java
@@ -0,0 +1,242 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.common;
+
+public class TripItem {
+
+ public static String FLIGHT = "Flight";
+ public static String HOTEL = "Hotel";
+ public static String CAR = "Car";
+ public static String TRIP = "Trip";
+
+ private String id;
+ private String tripId;
+ private String type;
+ private String name;
+ private String description;
+ private String location;
+ private String fromDate;
+ private String toDate;
+ private double price;
+ private String currency;
+ private String link;
+ private TripItem[] tripItems; // used for a trip made up of trip items
+ private String customerDetails;
+ private String agentDetails;
+ private String bookingCode;
+
+ public TripItem() {
+ }
+
+ public TripItem(TripItem item) {
+ this.id = item.getId();
+ this.tripId = item.getTripId();
+ this.type = item.getType();
+ this.name = item.getName();
+ this.description = item.getDescription();
+ this.location = item.getLocation();
+ this.fromDate = item.getFromDate();
+ this.toDate = item.getToDate();
+ this.price = item.getPrice();
+ this.currency = item.getCurrency();
+ this.link = item.getLink();
+ }
+
+ public TripItem(String id,
+ String tripId,
+ String type,
+ String name,
+ String description,
+ String location,
+ String fromDate,
+ String toDate,
+ double price,
+ String currency,
+ String link) {
+ this.id = id;
+ this.tripId = tripId;
+ this.type = type;
+ this.name = name;
+ this.description = description;
+ this.location = location;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.price = price;
+ this.currency = currency;
+ this.link = link;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTripId() {
+ return tripId;
+ }
+
+ public void setTripId(String tripId) {
+ this.tripId = tripId;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public String getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(String fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public String getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(String toDate) {
+ this.toDate = toDate;
+ }
+
+ public double getPrice() {
+ return price;
+ }
+
+ public void setPrice(double price) {
+ this.price = price;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+
+ public TripItem[] getTripItems() {
+ return tripItems;
+ }
+
+ public void setTripItems(TripItem[] tripItems) {
+ this.tripItems = tripItems;
+ }
+
+ public String getCustomerDetails() {
+ return customerDetails;
+ }
+
+ public void setCustomerDetails(String customerDetails) {
+ this.customerDetails = customerDetails;
+ }
+
+ public String getAgentDetails() {
+ return agentDetails;
+ }
+
+ public void setAgentDetails(String agentDetails) {
+ this.agentDetails = agentDetails;
+ }
+
+ public String getBookingCode() {
+ return bookingCode;
+ }
+
+ public void setBookingCode(String bookingCode) {
+ this.bookingCode = bookingCode;
+ }
+
+ @Override
+ public String toString() {
+ String tripString =
+ "Trip: id " + this.tripId
+ + " type "
+ + this.type
+ + " name "
+ + this.name
+ + " description "
+ + this.description
+ + " location "
+ + this.location
+ + " fromDate "
+ + this.fromDate
+ + " toDate "
+ + this.toDate
+ + " price "
+ + this.price
+ + " currency "
+ + this.currency
+ + " link "
+ + this.link;
+ return tripString;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+
+ if (obj instanceof TripItem) {
+ if (((TripItem)obj).getId().equals(getId())) {
+ return true;
+ }
+ }
+
+ return super.equals(obj);
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripLeg.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripLeg.java
new file mode 100644
index 0000000000..663634b1e9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/java/com/tuscanyscatours/common/TripLeg.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.common;
+
+public class TripLeg {
+
+ private String id;
+ private String fromLocation;
+ private String toLocation;
+ private String fromDate;
+ private String toDate;
+ private String noOfPeople;
+
+ public TripLeg() {
+ }
+
+ public TripLeg(String id, String fromLocation, String toLocation, String fromDate, String toDate, String noOfPeople) {
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getFromLocation() {
+ return fromLocation;
+ }
+
+ public void setFromLocation(String fromLocation) {
+ this.fromLocation = fromLocation;
+ }
+
+ public String getToLocation() {
+ return toLocation;
+ }
+
+ public void setToLocation(String toLocation) {
+ this.toLocation = toLocation;
+ }
+
+ public String getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(String fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public String getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(String toDate) {
+ this.toDate = toDate;
+ }
+
+ public String getNoOfPeople() {
+ return noOfPeople;
+ }
+
+ public void setNoOfPeople(String noOfPeople) {
+ this.noOfPeople = noOfPeople;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..d7ada5afe7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/common/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="com.tuscanyscatours.common" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/build.xml
new file mode 100644
index 0000000000..93d1c4ad47
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-creditcard-payment-jaxb-policy" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/maven-eclipse.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/maven-eclipse.xml
new file mode 100644
index 0000000000..4ceebd71f7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/maven-eclipse.xml
@@ -0,0 +1,8 @@
+<project default="copy-resources">
+ <target name="init"/>
+ <target name="copy-resources" depends="init">
+ <copy todir="target/classes/META-INF" filtering="true">
+ <fileset dir="." includes="LICENSE|NOTICE"/>
+ </copy>
+ </target>
+</project> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/pom.xml
new file mode 100644
index 0000000000..979b286c8e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/pom.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-creditcard-payment-jaxb-policy</artifactId>
+ <name>Apache Tuscany SCA Tours Credit Card Payment Contribution JAXB Policy</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>wsimport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources
+ </wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source
+ </sourceDestDir>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..293f08453f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.creditcard.impl;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+/**
+ *
+ */
+@Service(CreditCardPayment.class)
+public class CreditCardPaymentImpl implements CreditCardPayment {
+
+ public String authorize(CreditCardDetailsType creditCard, float amount) {
+ if (creditCard != null) {
+ System.out.println("Checking card: name = " + creditCard.getCardOwner().getName()
+ + " number = "
+ + creditCard.getCreditCardNumber()
+ + " for amount "
+ + amount);
+ } else {
+ System.out.println("Checking card is null");
+ }
+
+ return "OK";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..f313043bf8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,134 @@
+<?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/">
+
+ <!-- https://jaxb.dev.java.net/issues/show_bug.cgi?id=518 -->
+ <!-- I have to change the complex types to be annoymous -->
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd: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
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..3b889caefd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment.creditcard" />
+ <deployable composite="scatours:creditcard" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/creditcard.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/creditcard.composite
new file mode 100644
index 0000000000..4a91a96255
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/creditcard.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="creditcard">
+
+ <component name="CreditCardPayment">
+ <implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" />
+ <service name="CreditCardPayment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)" />
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
+ <binding.sca/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/definitions.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..5a2c58eaed
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/main/resources/definitions.xml
@@ -0,0 +1,36 @@
+<?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://itest/policy"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:ip="http://itest/policy" >
+
+
+ <policySet name="BasicAuthenticationPolicySet"
+ provides="authentication"
+ appliesTo="sca:binding.ws">
+ <tuscany:basicAuthentication>
+ <tuscany:userName>myname</tuscany:userName>
+ <tuscany:password>mypassword</tuscany:password>
+ </tuscany:basicAuthentication>
+ </policySet>
+
+</definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java
new file mode 100644
index 0000000000..a33b2b3046
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb-policy/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.creditcard;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.creditcard.AuthorizeFault_Exception;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ *
+ */
+public class CreditCardPaymentTestCase {
+ private static SCANode node;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ try {
+ node =
+ SCANodeFactory.newInstance().createSCANode("creditcard.composite", new SCAContribution("creditcard", "./target/classes"));
+
+ node.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testCreditCardPayment() {
+ SCAClient client = (SCAClient)node;
+ CreditCardPayment cc = client.getService(CreditCardPayment.class, "CreditCardPayment");
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa"));
+ PayerType ccOwner = objectFactory.createPayerType();
+ ccOwner.setName("Fred");
+ ccDetails.setCardOwner(ccOwner);
+
+ try {
+ System.out.println(cc.authorize(ccDetails, 100.00f));
+ } catch (AuthorizeFault_Exception e) {
+ System.err.println("Fault: " + e.getFaultInfo().getErrorCode());
+ }
+ }
+
+ @Test
+ @Ignore
+ public void testWaitForInput() {
+ System.out.println("Press a key to end");
+ try {
+ System.in.read();
+ } catch (Exception ex) {
+ }
+ System.out.println("Shutting down");
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node != null) {
+ node.stop();
+ node = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/build.xml
new file mode 100644
index 0000000000..9e0ac7fff9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-creditcard-payment-jaxb" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/pom.xml
new file mode 100644
index 0000000000..260e2c1c5e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/pom.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-creditcard-payment-jaxb</artifactId>
+ <name>Apache Tuscany SCA Tours Credit Card Payment Contribution JAXB</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>wsimport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources
+ </wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source
+ </sourceDestDir>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..ed817a58bb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.creditcard.impl;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+/**
+ *
+ */
+@Service(CreditCardPayment.class)
+public class CreditCardPaymentImpl implements CreditCardPayment {
+
+ public String authorize(CreditCardDetailsType creditCard, float amount) {
+ if (creditCard != null) {
+ System.out.println("Checking card: name = " + creditCard.getCardOwner().getName()
+ + " number = "
+ + creditCard.getCreditCardNumber()
+ + " for amount "
+ + amount);
+ } else {
+ System.out.println("Checking card is null");
+ }
+
+ return "OK";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..6dcc619c48
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,134 @@
+<?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/">
+
+ <!-- https://jaxb.dev.java.net/issues/show_bug.cgi?id=518 -->
+ <!-- I have to change the complex types to be annoymous -->
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd: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
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..ea6bed8e09
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment.creditcard" />
+ <deployable composite="scatours:creditcard" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/creditcard.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/creditcard.composite
new file mode 100644
index 0000000000..db6907cf7e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/main/resources/creditcard.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="creditcard">
+
+ <component name="CreditCardPayment">
+ <implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" />
+ <service name="CreditCardPayment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)" />
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" />
+ <binding.sca/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java
new file mode 100644
index 0000000000..65c7beb367
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-jaxb/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.creditcard;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.creditcard.AuthorizeFault_Exception;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ *
+ */
+public class CreditCardPaymentTestCase {
+ private static SCANode node;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ try {
+ node =
+ SCANodeFactory.newInstance().createSCANode(null, new SCAContribution("creditcard", "./target/classes"));
+
+ node.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testCreditCardPayment() {
+ SCAClient client = (SCAClient)node;
+ CreditCardPayment cc = client.getService(CreditCardPayment.class, "CreditCardPayment");
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa"));
+ PayerType ccOwner = objectFactory.createPayerType();
+ ccOwner.setName("Fred");
+ ccDetails.setCardOwner(ccOwner);
+
+ try {
+ System.out.println(cc.authorize(ccDetails, 100.00f));
+ } catch (AuthorizeFault_Exception e) {
+ System.err.println("Fault: " + e.getFaultInfo().getErrorCode());
+ }
+ }
+
+ @Test
+ @Ignore
+ public void testWaitForInput() {
+ System.out.println("Press a key to end");
+ try {
+ System.in.read();
+ } catch (Exception ex) {
+ }
+ System.out.println("Shutting down");
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node != null) {
+ node.stop();
+ node = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/build.xml
new file mode 100644
index 0000000000..2f9f3d9625
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/build.xml
@@ -0,0 +1,31 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-creditcard-payment-sdo" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="sdojavagen">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardDetailsType.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ <param name="prefix" value="CreditCardPayment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/pom.xml
new file mode 100644
index 0000000000..5bb9a42575
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/pom.xml
@@ -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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-creditcard-payment-sdo</artifactId>
+ <name>Apache Tuscany SCA Tours Credit Card Payment Contribution SDO</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-databinding-sdo</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <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/sdo-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.tuscany.sdo</groupId>
+ <artifactId>tuscany-sdo-plugin</artifactId>
+ <version>1.1.1</version>
+ <executions>
+ <execution>
+ <id>generate-sdo</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <schemaFile>
+ ${basedir}/src/main/resources/CreditCardPayment.wsdl
+ </schemaFile>
+ <javaPackage>com.tuscanyscatours.payment.creditcard</javaPackage>
+ <prefix>CreditCardPayment</prefix>
+ <noNotification>true</noNotification>
+ <noContainer>true</noContainer>
+ <noUnsettable>true</noUnsettable>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java
new file mode 100644
index 0000000000..9f508ecc59
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java
@@ -0,0 +1,33 @@
+package com.tuscanyscatours.payment.creditcard;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebService(name = "CreditCardPayment", targetNamespace = "http://tuscanyscatours.com/CreditCardPayment/")
+public interface CreditCardPayment {
+
+ /**
+ *
+ * @param amount
+ * @param creditCard
+ * @return
+ * returns java.lang.String
+ */
+ @WebMethod(action = "http://tuscanyscatours.com/CreditCardPayment/authorize")
+ @WebResult(name = "Status", targetNamespace = "")
+ @RequestWrapper(localName = "authorize", targetNamespace = "http://tuscanyscatours.com/CreditCardPayment/", className = "com.tuscanyscatours.payment.creditcard.AuthorizeType")
+ @ResponseWrapper(localName = "authorizeResponse", targetNamespace = "http://tuscanyscatours.com/CreditCardPayment/", className = "com.tuscanyscatours.payment.creditcard.AuthorizeResponseType")
+ public String authorize(@WebParam(name = "CreditCard", targetNamespace = "") CreditCardDetailsType creditCard,
+ @WebParam(name = "Amount", targetNamespace = "") float amount);
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..ed817a58bb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.creditcard.impl;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+/**
+ *
+ */
+@Service(CreditCardPayment.class)
+public class CreditCardPaymentImpl implements CreditCardPayment {
+
+ public String authorize(CreditCardDetailsType creditCard, float amount) {
+ if (creditCard != null) {
+ System.out.println("Checking card: name = " + creditCard.getCardOwner().getName()
+ + " number = "
+ + creditCard.getCreditCardNumber()
+ + " for amount "
+ + amount);
+ } else {
+ System.out.println("Checking card is null");
+ }
+
+ return "OK";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..d7e274aeee
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.example.org/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..ab31664247
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tours="http://tuscanyscatours.com/">
+ <deployable composite="tours:creditcard" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/creditcard.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/creditcard.composite
new file mode 100644
index 0000000000..f5cd7c2506
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/main/resources/creditcard.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="creditcard">
+
+ <component name="CreditCardPayment">
+ <implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" />
+ <service name="CreditCardPayment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)"/>
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" />
+ <binding.sca />
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java
new file mode 100644
index 0000000000..b7d76a061f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-sdo/src/test/java/scatours/payment/creditcard/CreditCardPaymentTestCase.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.creditcard;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+import com.tuscanyscatours.payment.creditcard.CreditCardPaymentFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ *
+ */
+public class CreditCardPaymentTestCase {
+ private static SCANode node;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ SCANodeFactory factory = SCANodeFactory.newInstance();
+ node = factory.createSCANode(null, new SCAContribution("creditcard-sdo", "./target/classes"));
+ node.start();
+ }
+
+ @Test
+ public void testCreditCardPayment() {
+ SCAClient client = (SCAClient)node;
+ CreditCardPayment cc = client.getService(CreditCardPayment.class, "CreditCardPayment");
+
+ CreditCardPaymentFactory factory = CreditCardPaymentFactory.INSTANCE;
+ CreditCardDetailsType ccDetails = factory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType("Visa");
+ ccDetails.setCreditCardNumber("1111-2222-3333-4444");
+ ccDetails.setExpMonth(9);
+ ccDetails.setExpYear(2010);
+ PayerType ccOwner = factory.createPayerType();
+ ccOwner.setName("Fred");
+ ccDetails.setCardOwner(ccOwner);
+
+ System.out.println(cc.authorize(ccDetails, 100.00f));
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node != null) {
+ node.stop();
+ node = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/build.xml
new file mode 100644
index 0000000000..a35dd7eeb5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-creditcard-payment-webapp" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/pom.xml
new file mode 100644
index 0000000000..46ed51704b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-creditcard-payment-webapp</artifactId>
+ <packaging>war</packaging>
+ <name>Apache Tuscany SCA Tours CreditCard Payment WebApp Contribution</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-web-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-webapp</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-creditcard-payment-jaxb</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..6dcc619c48
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,134 @@
+<?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/">
+
+ <!-- https://jaxb.dev.java.net/issues/show_bug.cgi?id=518 -->
+ <!-- I have to change the complex types to be annoymous -->
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd: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
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..898321c510
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:creditcard-webapp" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-deployables/web.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-deployables/web.composite
new file mode 100644
index 0000000000..ac9128a6d5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/META-INF/sca-deployables/web.composite
@@ -0,0 +1,43 @@
+<?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://tuscanyscatours.com/"
+ name="creditcard-webapp">
+
+ <component name="CreditCardPaymentWeb">
+ <implementation.web web-uri="" />
+ <reference name="service" target="CreditCardPayment">
+ <interface.java interface="com.tuscanyscatours.payment.creditcard.CreditCardPayment"/>
+ <!--
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" />
+ -->
+ </reference>
+ </component>
+
+ <component name="CreditCardPayment">
+ <implementation.java class="com.tuscanyscatours.payment.creditcard.impl.CreditCardPaymentImpl" />
+ <service name="CreditCardPayment">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/CreditCardPayment/#wsdl.interface(CreditCardPayment)" />
+ <binding.ws uri="http://localhost:8080/CreditCardPayment" />
+ <binding.sca/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/WEB-INF/web.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..a6188e25ba
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,42 @@
+<?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.
+-->
+
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
+
+ <display-name>SCA Tours Credit Card Payment WebApp</display-name>
+
+ <filter>
+ <filter-name>tuscany</filter-name>
+ <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>tuscany</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <welcome-file-list>
+ <welcome-file>creditcard.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
+
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/creditcard.jsp b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/creditcard.jsp
new file mode 100644
index 0000000000..98b7f41e7b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/creditcard-payment-webapp/src/main/webapp/creditcard.jsp
@@ -0,0 +1,71 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<%@ page contentType="text/html;charset=UTF-8" language="java"%>
+<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca"%>
+
+<sca:reference name="service"
+ type="com.tuscanyscatours.payment.creditcard.CreditCardPayment" />
+
+
+<%@page import="com.tuscanyscatours.payment.creditcard.CreditCardPaymentService"%>
+<%@page import="com.tuscanyscatours.payment.creditcard.ObjectFactory"%>
+<%@page import="com.tuscanyscatours.payment.creditcard.CreditCardDetailsType"%>
+<%@page import="com.tuscanyscatours.payment.creditcard.CreditCardTypeType"%>
+<%@page import="com.tuscanyscatours.payment.creditcard.PayerType"%><html>
+<body>
+
+<h2>SCATours Credit Card Payment Web Application</h2>
+
+<p>
+<form action="creditcard.jsp" method="get">Card Type: <select
+ name="type">
+ <option value="Visa" selected="selected">Visa</option>
+ <option value="MasterCard">MasterCard</option>
+ <option value="Amex">Amex</option>
+ <option value="Discover">Discover</option>
+</select> <br />
+Card Number: <input type="text" name="cardNumber" /><br />
+Card Holder: <input type="text" name="cardHolder" /><br />
+Amount (EUR): <input type="text" name="amount" /><br />
+<p>
+<input type="submit" name="charge" value="Submit" /></form>
+
+<%
+ String c = request.getParameter("charge");
+ if (c != null) {
+ ObjectFactory objectFactory = new ObjectFactory();
+ CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType(CreditCardTypeType.fromValue(request.getParameter("type")));
+ ccDetails.setCreditCardNumber(request.getParameter("cardNumber"));
+ ccDetails.setCVV2("123");
+ ccDetails.setExpMonth(12);
+ ccDetails.setExpYear(2011);
+ PayerType ccOwner = objectFactory.createPayerType();
+ ccOwner.setName(request.getParameter("cardHolder"));
+ ccDetails.setCardOwner(ccOwner);
+ float amount = Float.parseFloat(request.getParameter("amount"));
+%>
+<%=service.authorize(ccDetails, amount)%>
+<%
+ }
+%>
+
+</body>
+</html>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/build.xml
new file mode 100644
index 0000000000..fa2ac47a64
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency-corba" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/pom.xml
new file mode 100644
index 0000000000..8ab8cff332
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency-corba</artifactId>
+ <name>Apache Tuscany SCA Tours Currency Converter Contribution With CORBA Binding</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..f22dd9b55d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.currencyconverter"/>
+ <import.java package="com.tuscanyscatours.currencyconverter.impl"/>
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/currency-converter-corba.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/currency-converter-corba.composite
new file mode 100644
index 0000000000..3fde6ea309
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-corba/src/main/resources/currency-converter-corba.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="currencyconverter">
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl" />
+ <service name="CurrencyConverter">
+ <interface.java interface="com.tuscanyscatours.currencyconverter.CurrencyConverter" />
+ <tuscany:binding.corba host="localhost" port="5080" name="CurrencyConverterCORBAService"/>
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/build.xml
new file mode 100644
index 0000000000..1b5cef445b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency-jms" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/pom.xml
new file mode 100644
index 0000000000..ef1aa9fd3a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/pom.xml
@@ -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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency-jms</artifactId>
+ <name>Apache Tuscany SCA Tours Currency Converter Contribution With JMS Binding</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jms-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jms-asf</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-all</artifactId>
+ <version>5.2.0</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-web-demo</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..89ba1a3578
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.currencyconverter.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/currency-converter-jms.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/currency-converter-jms.composite
new file mode 100644
index 0000000000..ac34d6f562
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jms/src/main/resources/currency-converter-jms.composite
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="currencyconverter">
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl"/>
+ <service name="CurrencyConverter">
+ <interface.java interface="com.tuscanyscatours.currencyconverter.CurrencyConverter"/>
+ <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+ jndiURL="tcp://localhost:61619">
+ <destination name="RequestQueue" create="ifnotexist"/>
+ <response>
+ <destination name="ResponseQueue" create="ifnotexist"/>
+ </response>
+ </binding.jms>
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/build.xml
new file mode 100644
index 0000000000..09bd0eb999
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency-jsp" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/pom.xml
new file mode 100644
index 0000000000..5942d4f911
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency-jsp</artifactId>
+ <packaging>war</packaging>
+ <name>Apache Tuscany SCA Tours Currency Converter JSP Contribution</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-web-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-webapp</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-currency</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/META-INF/sca-deployables/web.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/META-INF/sca-deployables/web.composite
new file mode 100644
index 0000000000..50667b1ac0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/META-INF/sca-deployables/web.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="CurrencyConverterJSP">
+
+ <component name="WebClient">
+ <implementation.web web-uri=""/>
+ <reference name="currencyConverter" target="CurrencyConverter"/>
+ </component>
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl"/>
+ <service name="CurrencyConverter"/>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/WEB-INF/web.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..3b2c79ca76
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,42 @@
+<?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.
+-->
+
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
+
+ <display-name>SCA Tours Currency Converter JSP</display-name>
+
+ <filter>
+ <filter-name>tuscany</filter-name>
+ <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>tuscany</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <welcome-file-list>
+ <welcome-file>currency-converter.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
+
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/currency-converter.jsp b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/currency-converter.jsp
new file mode 100644
index 0000000000..daf8c5cff1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-jsp/src/main/webapp/currency-converter.jsp
@@ -0,0 +1,49 @@
+<!--
+ * 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.
+-->
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %>
+
+<sca:reference name="currencyConverter" type="com.tuscanyscatours.currencyconverter.CurrencyConverter"/>
+
+<html>
+<body>
+<h2>SCA Tours Currency Converter JSP</h2>
+Welcome to the SCA Tours Currency Converter:
+<p>
+
+<form method=post action="currency-converter.jsp">
+Enter value in US Dollars
+<input type=text name=dollars size=15>
+<p>
+<input type=submit>
+</form>
+
+<p>
+
+<%
+ String dollarsStr = request.getParameter( "dollars" );
+ if ( dollarsStr != null) {
+ double dollars = Double.parseDouble(dollarsStr);
+ double converted = currencyConverter.convert("USD", "GBP", dollars);
+ out.println(dollars + " US Dollars = " + converted + " GB Pounds");
+ }
+%>
+</body>
+</html>
+
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/build.xml
new file mode 100644
index 0000000000..a969f0c819
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency-rmi" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/pom.xml
new file mode 100644
index 0000000000..0bd15a7895
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency-rmi</artifactId>
+ <name>Apache Tuscany SCA Tours Currency Converter Contribution With RMI Binding</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..cf7325d247
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.currencyconverter.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/currency-converter-rmi.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/currency-converter-rmi.composite
new file mode 100644
index 0000000000..52df3a183f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-rmi/src/main/resources/currency-converter-rmi.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="currencyconverter">
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl" />
+ <service name="CurrencyConverter">
+ <interface.java interface="com.tuscanyscatours.currencyconverter.CurrencyConverter" />
+ <tuscany:binding.rmi host="localhost" port="8099" serviceName="CurrencyConverterRMI"/>
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/build.xml
new file mode 100644
index 0000000000..7c36a78b34
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/build.xml
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency-servlet" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../currency/target/scatours-contribution-currency.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/pom.xml
new file mode 100644
index 0000000000..cc4ba525a1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency-servlet</artifactId>
+ <packaging>war</packaging>
+ <name>Apache Tuscany SCA Tours Currency Converter Servlet Contribution</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-web-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-webapp</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.3</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-currency</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/java/com/tuscanyscatours/currencyconverter/servlet/CurrencyConverterServlet.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/java/com/tuscanyscatours/currencyconverter/servlet/CurrencyConverterServlet.java
new file mode 100644
index 0000000000..3584ebbb93
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/java/com/tuscanyscatours/currencyconverter/servlet/CurrencyConverterServlet.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.currencyconverter.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.annotations.Reference;
+
+import com.tuscanyscatours.currencyconverter.CurrencyConverter;
+
+public class CurrencyConverterServlet extends HttpServlet {
+
+ @Reference
+ protected CurrencyConverter currencyConverter;
+
+ @Override
+ public void init(ServletConfig config) {
+ if (currencyConverter == null) {
+ // The Currency Converter reference will only be injected from the @Reference
+ // annotation in containers supporting SCA "deep" integration. In other
+ // environments in can be looked up from the ComponentContext.
+ ComponentContext context =
+ (ComponentContext)config.getServletContext().getAttribute("org.osoa.sca.ComponentContext");
+ currencyConverter = context.getService(CurrencyConverter.class, "currencyConverter");
+ }
+ }
+
+ @Override
+ protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ Writer out = response.getWriter();
+ out.write("<html><body><h2>SCA Tours Currency Converter Servlet</h2>");
+ out.write("Welcome to the SCA Tours Currency Converter Servlet<p>");
+ out.write("<form method=post action=\"CurrencyConverterServlet\">");
+ out.write("Enter value in US Dollars");
+ out.write("<input type=text name=dollars size=15><p>");
+ out.write("<input type=submit>");
+ out.write("</form><p>");
+
+ String dollarsStr = request.getParameter("dollars");
+ if (dollarsStr != null) {
+ double dollars = Double.parseDouble(dollarsStr);
+ double converted = currencyConverter.convert("USD", "GBP", dollars);
+ out.write(dollars + " US Dollars = " + converted + " GB Pounds");
+ }
+
+ out.write("</body></html>");
+ out.flush();
+ out.close();
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/META-INF/sca-deployables/web.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/META-INF/sca-deployables/web.composite
new file mode 100644
index 0000000000..c9ef16ee1b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/META-INF/sca-deployables/web.composite
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://scatours.com"
+ name="CurrencyConverterServlet">
+
+ <component name="WebClient">
+ <implementation.web web-uri=""/>
+ <reference name="currencyConverter" target="CurrencyConverter"/>
+ </component>
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl"/>
+ <service name="CurrencyConverter"/>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/WEB-INF/web.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..2204c67870
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-servlet/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,52 @@
+<?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.
+-->
+
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
+
+ <display-name>SCA Tours Currency Converter Servlet</display-name>
+
+ <filter>
+ <filter-name>tuscany</filter-name>
+ <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>tuscany</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <servlet>
+ <servlet-name>CurrencyConverterServlet</servlet-name>
+ <servlet-class>com.tuscanyscatours.currencyconverter.servlet.CurrencyConverterServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>CurrencyConverterServlet</servlet-name>
+ <url-pattern>/CurrencyConverterServlet</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>CurrencyConverterServlet</welcome-file>
+ </welcome-file-list>
+</web-app>
+
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/build.xml
new file mode 100644
index 0000000000..bf87bbfba6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency-ws" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/pom.xml
new file mode 100644
index 0000000000..5d309faa85
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency-ws</artifactId>
+ <name>Apache Tuscany SCA Tours Currency Converter Contribution With Web Service Binding</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..cf7325d247
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.currencyconverter.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/currency-converter-ws.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/currency-converter-ws.composite
new file mode 100644
index 0000000000..b048a826f1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency-ws/src/main/resources/currency-converter-ws.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="currencyconverter">
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl" />
+ <service name="CurrencyConverter">
+ <interface.java interface="com.tuscanyscatours.currencyconverter.CurrencyConverter" />
+ <binding.ws />
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/build.xml
new file mode 100644
index 0000000000..0f5811e299
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-currency" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/pom.xml
new file mode 100644
index 0000000000..0b35063efa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-currency</artifactId>
+ <name>Apache Tuscany SCA Tours Currency Converter Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/CurrencyConverter.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/CurrencyConverter.java
new file mode 100644
index 0000000000..b1f783bfba
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/CurrencyConverter.java
@@ -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 com.tuscanyscatours.currencyconverter;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The CurrencyConverter service interface
+ */
+@Remotable
+public interface CurrencyConverter {
+
+ double getExchangeRate(String fromCurrencyCode, String toCurrencyCode);
+
+ double convert(String fromCurrencyCode, String toCurrencyCode, double amount);
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/impl/CurrencyConverterImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/impl/CurrencyConverterImpl.java
new file mode 100644
index 0000000000..6ad9a957c7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/java/com/tuscanyscatours/currencyconverter/impl/CurrencyConverterImpl.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.currencyconverter.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.currencyconverter.CurrencyConverter;
+
+/**
+ * An implementation of the CurrencyConverter service
+ */
+@Service(interfaces = {CurrencyConverter.class})
+public class CurrencyConverterImpl implements CurrencyConverter {
+
+ // currency index
+ private Map<String, Integer> currencyIndex = new HashMap<String, Integer>();
+
+ // exchange rates
+ private final double rates[][] = { {1.00, 0.50, 0.66}, {2.00, 1.00, 1.33}, {1.50, 0.75, 1.00}};
+
+ public CurrencyConverterImpl() {
+ currencyIndex.put("USD", new Integer(0));
+ currencyIndex.put("GBP", new Integer(1));
+ currencyIndex.put("EUR", new Integer(2));
+ }
+
+ public double getExchangeRate(String fromCurrencyCode, String toCurrencyCode) {
+ return rates[currencyIndex.get(fromCurrencyCode).intValue()][currencyIndex.get(toCurrencyCode).intValue()];
+ }
+
+ public double convert(String fromCurrencyCode, String toCurrencyCode, double amount) {
+ return amount * getExchangeRate(fromCurrencyCode, toCurrencyCode);
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b11328f405
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="com.tuscanyscatours.currencyconverter" />
+ <export.java package="com.tuscanyscatours.currencyconverter.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/currency-converter.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/currency-converter.composite
new file mode 100644
index 0000000000..41d0d325d4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/currency/src/main/resources/currency-converter.composite
@@ -0,0 +1,28 @@
+<?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://tuscanyscatours.com/"
+ name="currencyconverter">
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl" />
+ <service name="CurrencyConverter"/>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/build.xml
new file mode 100644
index 0000000000..94f9290854
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/build.xml
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-databinding-client" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../payment-java/target/scatours-contribution-payment-java.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/pom.xml
new file mode 100644
index 0000000000..1ceea2b45d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-databinding-client</artifactId>
+ <name>Apache Tuscany SCA Tours Databinding Client Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-payment-java</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/java/scatours/client/TestClient.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/java/scatours/client/TestClient.java
new file mode 100644
index 0000000000..f598a6f056
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/java/scatours/client/TestClient.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.client;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Runnable.class)
+public class TestClient {
+ @Reference
+ protected Payment payment;
+
+ public TestClient() {
+ }
+
+ public void run() {
+ System.out.println("Call Payment component");
+ System.out.println(payment.makePaymentMember("c-0", 100.00f));
+ System.out.println(payment.makePaymentMember("c-1", 100.00f));
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..87e8535676
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:client="http://client.scatours/">
+ <import.java package="com.tuscanyscatours.payment" />
+ <deployable composite="client:Client" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/client.composite
new file mode 100644
index 0000000000..e19697290c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/databinding-client/src/main/resources/client.composite
@@ -0,0 +1,28 @@
+<?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://client.scatours/"
+ name="Client">
+
+ <component name="TestClient">
+ <implementation.java class="scatours.client.TestClient" />
+ <reference name="payment" target="Payment" />
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/build.xml
new file mode 100644
index 0000000000..ec234bcb4a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-emailgateway" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/pom.xml
new file mode 100644
index 0000000000..3f0ade6681
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/pom.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-emailgateway</artifactId>
+ <name>Apache Tuscany SCA Tours Email Gateway Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>wsimport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources
+ </wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source
+ </sourceDestDir>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..0ff12b4efa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+
+/**
+ *
+ */
+@Service(EmailGateway.class)
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..bb9cd27027
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatewayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatewayBinding">
+ <soap:address location="http://localhost:8088/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..7d8aa000cc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:e="http://emailgateway" >
+ <export.java package="com.tuscanyscatours.emailgateway" />
+ <export.java package="com.tuscanyscatours.emailgateway.impl" />
+ <deployable composite="e:emailgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/emailgateway.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/emailgateway.composite
new file mode 100644
index 0000000000..a401b2a96e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/main/resources/emailgateway.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:e="http://emailgateway"
+ targetNamespace="http://emailgateway"
+ name="emailgateway">
+
+ <component name="EmailGateway">
+ <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
+ <service name="EmailGateway">
+ <binding.ws uri="http://localhost:8088/EmailGateway" />
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/EmailGatewayTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/EmailGatewayTestCase.java
new file mode 100644
index 0000000000..8b0ecba024
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/EmailGatewayTestCase.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.emailgateway;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+import com.tuscanyscatours.emailgateway.ObjectFactory;
+
+/**
+ *
+ */
+public class EmailGatewayTestCase {
+ private static SCANode node;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ SCANodeFactory factory = SCANodeFactory.newInstance();
+ node =
+ factory.createSCANode(null,
+ new SCAContribution("emailgateway", "./target/classes"),
+ new SCAContribution("emailgateway-test", "./target/test-classes"));
+ node.start();
+ }
+
+ @Test
+ public void testEmailGateway() {
+ SCAClient client = (SCAClient)node;
+ EmailGateway cc = client.getService(EmailGateway.class, "EmailGatewayClient");
+ ObjectFactory objectFactory = new ObjectFactory();
+ EmailType email = objectFactory.createEmailType();
+ email.setTo("Fred");
+ email.setTitle("An email");
+ email.setBody("A message");
+ System.out.println(cc.sendEmail(email));
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node != null) {
+ node.stop();
+ node = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/client/impl/EmailGatewayClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/client/impl/EmailGatewayClientImpl.java
new file mode 100644
index 0000000000..10d4984665
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/java/scatours/emailgateway/client/impl/EmailGatewayClientImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.emailgateway.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+
+/**
+ *
+ */
+@Service(EmailGateway.class)
+public class EmailGatewayClientImpl implements EmailGateway {
+ @Reference
+ protected EmailGateway emailGateway;
+
+ public String sendEmail(EmailType email) {
+ // Delegate the external web service
+ return emailGateway.sendEmail(email);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..cc141d7703
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:e="http://emailgateway-test">
+ <import.java package="com.tuscanyscatours.emailgateway" />
+ <import.java package="com.tuscanyscatours.emailgateway.impl" />
+ <deployable composite="e:emailgateway-test" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/emailgateway-test.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/emailgateway-test.composite
new file mode 100644
index 0000000000..8305356bda
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/emailgateway/src/test/resources/emailgateway-test.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:e="http://emailgateway-test"
+ targetNamespace="http://emailgateway-test"
+ name="emailgateway-test">
+ <component name="EmailGatewayClient">
+ <implementation.java class="scatours.emailgateway.client.impl.EmailGatewayClientImpl" />
+ <reference name="emailGateway">
+ <binding.ws uri="http://localhost:8088/EmailGateway" />
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/build.xml
new file mode 100644
index 0000000000..c23a99e6ca
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-feed-logger" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/pom.xml
new file mode 100644
index 0000000000..71c287d873
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-feed-logger</artifactId>
+ <name>Apache Tuscany SCA Tours Feed Logger Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-rss-rome</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/FeedLogger.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/FeedLogger.java
new file mode 100644
index 0000000000..0f5d18d53b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/FeedLogger.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.feedlogger;
+
+public interface FeedLogger {
+
+ /**
+ * Captures the configured feeds and logs the feed entries.
+ *
+ * @param maxEntriesPerFeed The maximum number of entries to log per feed
+ */
+ public void logFeeds(int maxEntriesPerFeed);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/impl/FeedLoggerImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/impl/FeedLoggerImpl.java
new file mode 100644
index 0000000000..a949d63383
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/java/com/tuscanyscatours/feedlogger/impl/FeedLoggerImpl.java
@@ -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 com.tuscanyscatours.feedlogger.impl;
+
+import java.util.List;
+
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.osoa.sca.annotations.Reference;
+
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.tuscanyscatours.feedlogger.FeedLogger;
+
+public class FeedLoggerImpl implements FeedLogger {
+
+ /**
+ * Reference to the SCA Tours Blog Atom feed.
+ */
+ @Reference
+ public org.apache.tuscany.sca.binding.atom.collection.Collection scaToursBlogAtom;
+
+ /**
+ * Reference to the SCA Tours Blog RSS feed.
+ */
+ @Reference
+ public org.apache.tuscany.sca.binding.rss.collection.Collection scaToursBlogRSS;
+
+ /**
+ * Reference to the BBC News RSS feed.
+ */
+ @Reference
+ public org.apache.tuscany.sca.binding.rss.collection.Collection bbcNews;
+
+ /**
+ * {@inheritDoc}
+ */
+ public void logFeeds(int maxEntriesPerFeed) {
+ System.out.println("Logging SCA Tours Blog Atom feed:");
+ logAtomFeed(scaToursBlogAtom, maxEntriesPerFeed);
+
+ System.out.println("Logging SCA Tours Blog RSS feed:");
+ logRSSFeed(scaToursBlogRSS, maxEntriesPerFeed);
+
+ System.out.println("Logging BBC News feed:");
+ logRSSFeed(bbcNews, maxEntriesPerFeed);
+ }
+
+ /**
+ * Logs up to maxEntries entries from the specified feed.
+ *
+ * @param maxEntries The maximum number of entries to log per feed
+ */
+ private void logAtomFeed(org.apache.tuscany.sca.binding.atom.collection.Collection atomFeed, int maxEntries) {
+ final Feed feed = atomFeed.getFeed();
+ System.out.println("Feed: " + feed.getTitle());
+ final List<Entry> entries = feed.getEntries();
+
+ for (int i = 0; i < entries.size() && i < maxEntries; i++) {
+ Entry entry = entries.get(i);
+ System.out.println("Entry: " + entry.getTitle());
+ }
+ System.out.println();
+ }
+
+ /**
+ * Logs up to maxEntries entries from the specified feed.
+ *
+ * @param maxEntries The maximum number of entries to log
+ */
+ private void logRSSFeed(org.apache.tuscany.sca.binding.rss.collection.Collection rssFeed, int maxEntries) {
+ SyndFeed feed = rssFeed.getFeed();
+ System.out.println("Feed: " + feed.getTitle());
+
+ List<SyndEntry> entries = feed.getEntries();
+ for (int i = 0; i < entries.size() && i < maxEntries; i++) {
+ SyndEntry entry = entries.get(i);
+ System.out.println("Entry: " + entry.getTitle());
+ }
+ System.out.println();
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..556807a0f0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,21 @@
+<?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">
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/feed-logger.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/feed-logger.composite
new file mode 100644
index 0000000000..17c24adefb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/feed-logger/src/main/resources/feed-logger.composite
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="feedLogger">
+
+ <service name="FeedLogger" promote="FeedLogger">
+ </service>
+
+ <component name="FeedLogger">
+ <implementation.java class="com.tuscanyscatours.feedlogger.impl.FeedLoggerImpl"/>
+ <reference name="scaToursBlogAtom">
+ <tuscany:binding.atom uri="http://scatours.wordpress.com/?feed=atom"/>
+ </reference>
+ <reference name="scaToursBlogRSS">
+ <tuscany:binding.rss uri="http://scatours.wordpress.com/?feed=rss"/>
+ </reference>
+ <reference name="bbcNews">
+ <tuscany:binding.rss uri="http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml"/>
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/build.xml
new file mode 100644
index 0000000000..0a151c1a20
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/build.xml
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-flight" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/pom.xml
new file mode 100644
index 0000000000..07659add09
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/pom.xml
@@ -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>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-flight</artifactId>
+ <name>Apache Tuscany SCA Tours Flight Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightImpl.java
new file mode 100644
index 0000000000..36407de5b3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightImpl.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.flight.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.common.Book;
+import com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+/**
+ * An implementation of the Flight service
+ */
+@Scope("CONVERSATION")
+@Service(interfaces = {Search.class, Book.class})
+public class FlightImpl implements Search, Book {
+
+ private List<FlightInfo> flights = new ArrayList<FlightInfo>();
+
+ @Callback
+ protected SearchCallback searchCallback;
+
+ @ComponentName
+ protected String componentName;
+
+ private int percentComplete = 0;
+
+ @Init
+ public void init() {
+ flights.add(new FlightInfo("EA26", "Europe Airlines Airbus A300", "LGW", "FLR", "06/12/09", "06/12/09", "350",
+ 250, "EUR", "http://localhost:8085/tbd"));
+ flights.add(new FlightInfo("EA27", "Europe Airlines Airbus A300", "FLR", "LGW", "13/12/09", "13/12/09", "350",
+ 250, "EUR", "http://localhost:8085/tbd"));
+
+ }
+
+ public TripItem[] searchSynch(TripLeg tripLeg) {
+ List<TripItem> items = new ArrayList<TripItem>();
+
+ // find outbound leg
+ for (FlightInfo flight : flights) {
+ if ((flight.getFromLocation().equals(tripLeg.getFromLocation())) && (flight.getToLocation().equals(tripLeg
+ .getToLocation()))
+ && (flight.getFromDate().equals(tripLeg.getFromDate()))) {
+ TripItem item =
+ new TripItem("", "", TripItem.FLIGHT, flight.getName(), flight.getDescription(), flight
+ .getFromLocation() + " - "
+ + flight.getToLocation(), flight.getFromDate(), flight.getToDate(), flight.getPricePerSeat(),
+ flight.getCurrency(), flight.getLink());
+ items.add(item);
+ }
+ }
+
+ // find return leg
+ for (FlightInfo flight : flights) {
+ if ((flight.getFromLocation().equals(tripLeg.getToLocation())) && (flight.getToLocation().equals(tripLeg
+ .getFromLocation()))
+ && (flight.getFromDate().equals(tripLeg.getToDate()))) {
+ TripItem item =
+ new TripItem("", "", TripItem.FLIGHT, flight.getName(), flight.getDescription(), flight
+ .getFromLocation() + " - "
+ + flight.getToLocation(), flight.getFromDate(), tripLeg.getToDate(), flight.getPricePerSeat(),
+ flight.getCurrency(), flight.getLink());
+ items.add(item);
+ }
+ }
+
+ return items.toArray(new TripItem[items.size()]);
+ }
+
+ public void searchAsynch(TripLeg tripLeg) {
+ System.out.println("Starting flight search");
+
+ // pretend that this processing takes some time to complete
+ while (percentComplete < 100) {
+ try {
+ Thread.sleep(50);
+ } catch (Exception ex) {
+ // do nothing
+ }
+ percentComplete = percentComplete + 10;
+ searchCallback.setPercentComplete(componentName, percentComplete);
+ }
+
+ // return available flights
+ searchCallback.searchResults(searchSynch(tripLeg));
+ }
+
+ public int getPercentComplete() {
+ return 100;
+ }
+
+ public String book(TripItem tripItem) {
+ return "flight1";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightInfo.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightInfo.java
new file mode 100644
index 0000000000..5f7de69229
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/java/com/tuscanyscatours/flight/impl/FlightInfo.java
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.flight.impl;
+
+public class FlightInfo {
+
+ private String name;
+ private String description;
+ private String fromLocation;
+ private String toLocation;
+ private String fromDate;
+ private String toDate;
+ private String seats;
+ private double pricePerSeat;
+ private String currency;
+ private String link;
+
+ public FlightInfo() {
+ }
+
+ public FlightInfo(String name,
+ String description,
+ String fromLocation,
+ String toLocation,
+ String fromDate,
+ String toDate,
+ String seats,
+ double pricePerSeat,
+ String currency,
+ String link) {
+
+ this.name = name;
+ this.description = description;
+ this.fromLocation = fromLocation;
+ this.toLocation = toLocation;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.seats = seats;
+ this.pricePerSeat = pricePerSeat;
+ this.currency = currency;
+ this.link = link;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getFromLocation() {
+ return fromLocation;
+ }
+
+ public void setFromLocation(String fromLocation) {
+ this.fromLocation = fromLocation;
+ }
+
+ public String getToLocation() {
+ return toLocation;
+ }
+
+ public void setToLocation(String toLocation) {
+ this.toLocation = toLocation;
+ }
+
+ public String getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(String fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public String getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(String toDate) {
+ this.toDate = toDate;
+ }
+
+ public String getSeats() {
+ return seats;
+ }
+
+ public void setSeats(String seats) {
+ this.seats = seats;
+ }
+
+ public double getPricePerSeat() {
+ return pricePerSeat;
+ }
+
+ public void setPricePerSeat(double pricePerSeat) {
+ this.pricePerSeat = pricePerSeat;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..1e539bf13b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/flight/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.common"/>
+ <export.java package="com.tuscanyscatours.flight.impl"/>
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/build.xml
new file mode 100644
index 0000000000..8428af49f5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-fullapp-bespoketrip" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/pom.xml
new file mode 100644
index 0000000000..19057cd8ca
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-fullapp-bespoketrip</artifactId>
+ <name>Apache Tuscany SCA Tours Full Application Bespoke Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <!--
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>${tuscany.version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>scatours.LaunchNode</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ -->
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..9ae204d8f7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:fullapp-bespoketrip" />
+ <import.java package="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.hotel" />
+ <import.java package="com.tuscanyscatours.hotel.impl" />
+ <import.java package="com.tuscanyscatours.flight.impl" />
+ <import.java package="com.tuscanyscatours.car.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/fullapp-bespoketrip.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/fullapp-bespoketrip.composite
new file mode 100644
index 0000000000..76c91b7887
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-bespoketrip/src/main/resources/fullapp-bespoketrip.composite
@@ -0,0 +1,63 @@
+<?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://tuscanyscatours.com/"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ name="fullapp-bespoketrip">
+
+ <component name="HotelPartner">
+ <implementation.java class="com.tuscanyscatours.hotel.impl.HotelImpl"/>
+ <service name="Search">
+ <binding.ws name="searchws" uri="http://localhost:8086/Hotel/Search"/>
+ <!-- tuscany:binding.jsonrpc name="searchjsonrpc"/-->
+ <callback>
+ <binding.ws/>
+ </callback>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="FlightPartner">
+ <implementation.java class="com.tuscanyscatours.flight.impl.FlightImpl"/>
+ <service name="Search">
+ <interface.java interface="com.tuscanyscatours.common.Search"
+ callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
+ <binding.ws name="searchws" uri="http://localhost:8086/Flight/Search"/>
+ <tuscany:binding.jsonrpc name="searchjsonrpc"/>
+ <callback>
+ <binding.ws/>
+ </callback>
+ </service>
+ <service name="Book"/>
+ </component>
+
+ <component name="CarPartner">
+ <implementation.java class="com.tuscanyscatours.car.impl.CarImpl"/>
+ <service name="Search">
+ <binding.ws name="searchws" uri="http://localhost:8086/Car/Search"/>
+ <tuscany:binding.jsonrpc name="searchjsonrpc"/>
+ <callback>
+ <binding.ws/>
+ </callback>
+ </service>
+ <service name="Book"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/build.xml
new file mode 100644
index 0000000000..0da4e5aebd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-fullapp-coordination" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/pom.xml
new file mode 100644
index 0000000000..3d802afef3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-fullapp-coordination</artifactId>
+ <name>Apache Tuscany SCA Tours Full Application Coordination Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <!--
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>${tuscany.version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>scatours.LaunchNode</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ -->
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..a6eb8bcce2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:fullapp-coordination" />
+ <import.java package="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.travelcatalog" />
+ <import.java package="com.tuscanyscatours.travelcatalog.impl" />
+ <import.java package="com.tuscanyscatours.shoppingcart" />
+ <import.java package="com.tuscanyscatours.tripbooking" />
+ <import.java package="com.tuscanyscatours.tripbooking.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/fullapp-coordination.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/fullapp-coordination.composite
new file mode 100644
index 0000000000..b3c901085d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-coordination/src/main/resources/fullapp-coordination.composite
@@ -0,0 +1,72 @@
+<?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://tuscanyscatours.com/"
+ name="fullapp-coordination">
+
+ <component name="TravelCatalog">
+ <implementation.java class="com.tuscanyscatours.travelcatalog.impl.TravelCatalogImpl"/>
+ <service name="TravelCatalogSearch"/>
+ <reference name="hotelSearch">
+ <binding.ws uri="http://localhost:8086/Hotel/Search"/>
+ <callback>
+ <binding.ws name="callback"
+ uri="http://localhost:8084/Hotel/SearchCallback"/>
+ </callback>
+ </reference>
+ <reference name="flightSearch">
+ <interface.java interface="com.tuscanyscatours.common.Search"
+ callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8086/Flight/Search"/>
+ <callback>
+ <binding.ws name="callback"
+ uri="http://localhost:8084/Flight/SearchCallback"/>
+ </callback>
+ </reference>
+ <reference name="carSearch">
+ <binding.ws uri="http://localhost:8086/Car/Search"/>
+ <callback>
+ <binding.ws name="callback"
+ uri="http://localhost:8084/Car/SearchCallback"/>
+ </callback>
+ </reference>
+ <reference name="tripSearch">
+ <binding.ws uri="http://localhost:8085/Trip/Search"/>
+ <callback>
+ <binding.ws name="callback"
+ uri="http://localhost:8084/Trip/SearchCallback"/>
+ </callback>
+ </reference>
+ <reference name="currencyConverter" target="CurrencyConverter">
+ </reference>
+ <property name="quoteCurrencyCode">GBP</property>
+ </component>
+
+ <component name="TripBooking">
+ <implementation.java class="com.tuscanyscatours.tripbooking.impl.TripBookingImpl"/>
+ <service name="TripBooking"/>
+ <reference name="hotelBook" target="HotelPartner/Book"/>
+ <reference name="flightBook" target="TripPartner/Book"/>
+ <reference name="carBook" target="CarPartner/Book"/>
+ <reference name="tripBook" target="TripPartner/Book"/>
+ <reference name="cartUpdates" target="ShoppingCart/CartUpdates"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/build.xml
new file mode 100644
index 0000000000..aa6127daf0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-fullapp-currency" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/pom.xml
new file mode 100644
index 0000000000..3d80feca3b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-fullapp-currency</artifactId>
+ <name>Apache Tuscany SCA Tours Full Application Currency Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <!--
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>${tuscany.version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>scatours.LaunchNode</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ -->
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..dc66ed8db6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:fullapp-currency" />
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.currencyconverter.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/fullapp-currency.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/fullapp-currency.composite
new file mode 100644
index 0000000000..654ff60c41
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-currency/src/main/resources/fullapp-currency.composite
@@ -0,0 +1,28 @@
+<?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://tuscanyscatours.com/"
+ name="fullapp-currency">
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/build.xml
new file mode 100644
index 0000000000..491f9cafd1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-fullapp-packagedtrip" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/pom.xml
new file mode 100644
index 0000000000..da1619db56
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-fullapp-packagedtrip</artifactId>
+ <name>Apache Tuscany SCA Tours Full Application Packaged Trip Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <!--
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>${tuscany.version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>scatours.LaunchNode</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ -->
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..3059c49911
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:fullapp-packagedtrip" />
+ <import.java package="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.trip.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/fullapp-packagedtrip.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/fullapp-packagedtrip.composite
new file mode 100644
index 0000000000..0f8dd33060
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-packagedtrip/src/main/resources/fullapp-packagedtrip.composite
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ name="fullapp-packagedtrip">
+
+ <component name="TripPartner">
+ <implementation.java class="com.tuscanyscatours.trip.impl.TripImpl"/>
+ <service name="Search">
+ <binding.ws name="searchws" uri="http://localhost:8085/Trip/Search"/>
+ <tuscany:binding.jsonrpc name="searchjsonrpc"/>
+ <callback>
+ <binding.ws/>
+ </callback>
+ </service>
+ <service name="Book"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/build.xml
new file mode 100644
index 0000000000..eccff2291f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-fullapp-shoppingcart" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/pom.xml
new file mode 100644
index 0000000000..4be01a61e2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-fullapp-shoppingcart</artifactId>
+ <name>Apache Tuscany SCA Tours Full Application Shopping Cart Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <!--
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>${tuscany.version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>scatours.LaunchNode</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ -->
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..384887f792
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/META-INF/sca-contribution.xml
@@ -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"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:fullapp-shoppingcart" />
+ <import.java package="com.tuscanyscatours.payment" />
+ <import.java package="com.tuscanyscatours.shoppingcart" />
+ <import.java package="com.tuscanyscatours.shoppingcart.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/fullapp-shoppingcart.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/fullapp-shoppingcart.composite
new file mode 100644
index 0000000000..ed4fce84d6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-shoppingcart/src/main/resources/fullapp-shoppingcart.composite
@@ -0,0 +1,36 @@
+<?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://tuscanyscatours.com/"
+ name="fullapp-shoppingcart">
+
+ <component name="ShoppingCart">
+ <implementation.java class="com.tuscanyscatours.shoppingcart.impl.ShoppingCartImpl"/>
+ <reference name="cartStore" target="CartStore"/>
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8081/Payment" />
+ </reference>
+ </component>
+
+ <component name="CartStore">
+ <implementation.java class="com.tuscanyscatours.shoppingcart.impl.CartStoreImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/build.xml
new file mode 100644
index 0000000000..51aef70837
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-fullapp-ui" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/pom.xml
new file mode 100644
index 0000000000..36fdea630f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-fullapp-ui</artifactId>
+ <name>Apache Tuscany SCA Tours Full Application User Interface Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <!--
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-maven-ant-generator</artifactId>
+ <version>${tuscany.version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <mainClass>scatours.LaunchNode</mainClass>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ -->
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..104a78cd92
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <deployable composite="scatours:fullapp-ui" />
+ <import.java package="com.tuscanyscatours" />
+ <import.java package="com.tuscanyscatours.impl" />
+ <import.java package="com.tuscanyscatours.shoppingcart" />
+ <import.java package="com.tuscanyscatours.travelcatalog" />
+ <import.java package="com.tuscanyscatours.tripbooking" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/fullapp-ui.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/fullapp-ui.composite
new file mode 100644
index 0000000000..bcfa894ca6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/fullapp-ui.composite
@@ -0,0 +1,58 @@
+<?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://tuscanyscatours.com/"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ name="fullapp-ui">
+
+ <component name="SCAToursUserInterface">
+ <tuscany:implementation.widget location="scatours.html"/>
+ <service name="Widget">
+ <tuscany:binding.http uri="/scatours"/>
+ </service>
+ <reference name="scaToursCatalog" target="SCATours/SCAToursSearch">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ <reference name="scaToursBooking" target="SCATours/SCAToursBooking">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ <reference name="scaToursCart" target="SCATours/SCAToursCart">
+ <tuscany:binding.jsonrpc/>
+ </reference>
+ </component>
+
+ <component name="SCATours">
+ <implementation.java class="com.tuscanyscatours.impl.SCAToursImpl"/>
+ <service name="SCAToursSearch">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="SCAToursBooking">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <service name="SCAToursCart">
+ <tuscany:binding.jsonrpc/>
+ </service>
+ <reference name="travelCatalogSearch" target="TravelCatalog/TravelCatalogSearch"/>
+ <reference name="tripBooking" target="TripBooking"/>
+ <reference name="cartInitialize" target="ShoppingCart/CartInitialize"/>
+ <reference name="cartCheckout" target="ShoppingCart/CartCheckout"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.html b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.html
new file mode 100644
index 0000000000..52479c1cde
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.html
@@ -0,0 +1,399 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<html>
+<head>
+<title>SCA Tours</title>
+
+<link rel="stylesheet" type="text/css" href="style.css" />
+
+<script type="text/javascript" src="scatours.js"></script>
+
+<script language="JavaScript">
+
+ //@Reference
+ var scaToursCatalog = new tuscany.sca.Reference("scaToursCatalog");
+
+ //@Reference
+ var scaToursBooking = new tuscany.sca.Reference("scaToursBooking");
+
+ //@Reference
+ var scaToursCart = new tuscany.sca.Reference("scaToursCart");
+
+ //local state
+ var packagedItems;
+ var bespokeItems;
+ var cartId;
+
+ //the constructor for trip leg beans
+ function TripLegType(id,
+ fromLocation,
+ toLocation,
+ fromDate,
+ toDate,
+ noOfPeople) {
+ this.id = id;
+ this.fromLocation = fromLocation;
+ this.toLocation = toLocation;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.noOfPeople = noOfPeople;
+ }
+
+ function getTripLeg(){
+ return new TripLegType(cartId,
+ document.searchForm.fromLocation.value,
+ document.searchForm.toLocation.value,
+ document.searchForm.fromDate.value,
+ document.searchForm.toDate.value,
+ document.searchForm.noOfPeople.value);
+ }
+
+ //the constructor for bespoke trip beans
+ function TripType() {
+ this.id = cartId;
+ this.type = "Bespoke";
+ this.tripItems = new Array();
+ // json databinding can't tolerate having a class hint set as the
+ // databinding transformer is not in the right classloader to load
+ // the class pointed to by the hint
+ //this.javaClass = "scatours.common.TripItem";
+ }
+
+ function getTrip(){
+ return new TripType();
+ }
+
+ // remove class hint from the trip object
+ // can also be used to limit the amount of
+ // data returned to the server
+ function copyTrip(trip){
+ var tripCopy = new TripType();
+
+ tripCopy.id = trip.id;
+ tripCopy.tripId = trip.tripId;
+ tripCopy.type = trip.type;
+ tripCopy.name = trip.name;
+ tripCopy.description = trip.description;
+ tripCopy.location = trip.location;
+ tripCopy.fromDate = trip.fromDate;
+ tripCopy.toDate = trip.toDate;
+ tripCopy.price = trip.price;
+ tripCopy.currency = trip.currency;
+ tripCopy.link = trip.link;
+
+ return tripCopy;
+ }
+
+ function init() {
+ try {
+ newCart();
+ }
+ catch(e) {
+ alert(e);
+ }
+ }
+
+ function reset() {
+ document.getElementById('packagedTripItems').innerHTML = "";
+ document.getElementById('bespokeTripItems').innerHTML = "";
+ document.getElementById('cartItems').innerHTML = "";
+ document.getElementById('cartPrice').innerHTML = "";
+ packagedItems = new Array();
+ bespokeItems = new Array();
+ }
+
+ function newCart() {
+ scaToursCart.newCart(newCart_response);
+ reset();
+ }
+
+ function newCart_response(newCartId, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+ cartId = newCartId
+ }
+
+ function searchTravelCatalog() {
+ scaToursCatalog.search(getTripLeg(), search_response);
+ }
+
+ function search_response(items, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+
+ var packagedHTML = '<h3>Packaged Trip Items</h3>';
+ packagedHTML += '<table border="0">';
+ packagedHTML += '<tr>';
+ packagedHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ packagedHTML += '</tr>';
+
+ var bespokeHTML = '<h3>Bespoke Trip Items</h3>';
+ bespokeHTML += '<table border="0">';
+ bespokeHTML += '<tr>';
+ bespokeHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ bespokeHTML += '</tr>';
+
+ for (var i=0; i<items.length; i++) {
+ if (items[i].type == "Trip") {
+ packagedHTML += '<tr>';
+ packagedHTML += '<td><input onClick="processPackagedSelection()" name="packagedTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
+ packagedHTML += '<td>' + items[i].name + '</td>';
+ packagedHTML += '<td>' + items[i].description + '</td>';
+ packagedHTML += '<td>' + items[i].location + '</td>';
+ packagedHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
+ packagedHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
+ packagedHTML += '</tr>';
+ packagedItems.push(items[i]);
+ } else {
+ bespokeHTML += '<tr>';
+ bespokeHTML += '<td><input onClick="processBespokeSelection()" name="bespokeTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
+ bespokeHTML += '<td>' + items[i].name + '</td>';
+ bespokeHTML += '<td>' + items[i].description + '</td>';
+ bespokeHTML += '<td>' + items[i].location + '</td>';
+ bespokeHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
+ bespokeHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
+ bespokeHTML += '</tr>';
+ bespokeItems.push(items[i]);
+ }
+ }
+
+ packagedHTML += '</table>';
+ packagedHTML += '<input type="button" onClick="bookPackagedTrip()" value="Book Packaged Trip">';
+
+ bespokeHTML += '<tr><td/><td/><td>Total Price</td><td/><td/><td><div id="bespokeTripPrice"></div> </td></tr>';
+ bespokeHTML += '</table>';
+ bespokeHTML += '<input type="button" onClick="bookBespokeTrip()" value="Book Bespoke Trip">';
+
+ if (packagedItems.length > 0){
+ document.getElementById('packagedTripItems').innerHTML = packagedHTML;
+ }
+
+ if (bespokeItems.length > 0){
+ document.getElementById('bespokeTripItems').innerHTML = bespokeHTML;
+ }
+ }
+
+ function processPackagedSelection() {
+ // do nothing at the moment
+ }
+
+ function processBespokeSelection() {
+ // calculate total price
+ var items = document.getElementsByName("bespokeTripItemSelection");
+ var totalPrice = 0.0;
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ totalPrice = totalPrice + bespokeItems[i].price;
+ }
+ }
+ document.getElementById('bespokeTripPrice').innerHTML = totalPrice + ' ' + bespokeItems[0]. currency;
+ }
+
+ function bookPackagedTrip() {
+ // find first selected trip item
+ var trip = null;
+ var items = document.getElementsByName("packagedTripItemSelection");
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ trip = copyTrip(packagedItems[i]);
+ break;
+ }
+ }
+
+ if (trip != null) {
+ // book trip
+ scaToursBooking.bookTrip(cartId, trip);
+
+ // reset the display
+ reset();
+
+ // re-populate the cart with all entries
+ getCartTrips();
+ } else {
+ alert ("Please select a trip")
+ }
+ }
+
+ function bookBespokeTrip() {
+ // create a trip object
+ var trip = getTrip();
+
+ // add selected trip items to trip
+ var items = document.getElementsByName("bespokeTripItemSelection");
+ for (var i=0; i<items.length; i++) {
+
+ // find the items that are checked
+ if (items[i].checked == true) {
+ trip.tripItems.push(copyTrip(bespokeItems[i]));
+ }
+ }
+
+ if (trip.tripItems.length > 0) {
+ // book trip
+ scaToursBooking.bookTrip(cartId, trip);
+
+ // reset the display
+ reset();
+
+ // re-populate the cart with all entries
+ getCartTrips();
+ } else {
+ alert ("Please select some trip items!")
+ }
+ }
+
+ function getCartTrips() {
+ scaToursCart.getTrips(cartId, getCartTrips_response);
+ }
+
+ function getCartTrips_response(trips, exception) {
+ if(exception){
+ alert(exception.javaStack);
+ return;
+ }
+ var itemsHTML = '';
+ var totalPrice = 0.0;
+ var currency = '?';
+
+ for (var x=0; x<trips.length; x++){
+ itemsHTML += '<h3>Trip - ' + trips[x].id + '</h3>';
+ itemsHTML += '<table border="0">';
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>Booking Ref</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
+ itemsHTML += '</tr>';
+
+ if (trips[x].type == "Trip") {
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>' + trips[x].bookingCode + '</td>';
+ itemsHTML += '<td>' + trips[x].name + '</td>';
+ itemsHTML += '<td>' + trips[x].description + '</td>';
+ itemsHTML += '<td>' + trips[x].location + '</td>';
+ itemsHTML += '<td>' + trips[x].fromDate + ' - ' + trips[x].toDate +'</td>';
+ itemsHTML += '<td>' + trips[x].price + ' ' + trips[x].currency + '</td>';
+ itemsHTML += '</tr>';
+ if (totalPrice == 0.0) {
+ currency = trips[x].currency;
+ }
+ totalPrice = totalPrice + trips[x].price;
+
+ } else {
+ var tripItems = trips[x].tripItems;
+
+ for (var i=0; i<tripItems.length; i++) {
+ itemsHTML += '<tr>';
+ itemsHTML += '<td>' + tripItems[i].bookingCode + '</td>';
+ itemsHTML += '<td>' + tripItems[i].name + '</td>';
+ itemsHTML += '<td>' + tripItems[i].description + '</td>';
+ itemsHTML += '<td>' + tripItems[i].location + '</td>';
+ itemsHTML += '<td>' + tripItems[i].fromDate + ' - ' + tripItems[i].toDate +'</td>';
+ itemsHTML += '<td>' + tripItems[i].price + ' ' + tripItems[i].currency + '</td>';
+ itemsHTML += '</tr>';
+ if (totalPrice == 0.0) {
+ currency = tripItems[i].currency;
+ }
+ totalPrice = totalPrice + tripItems[i].price;
+ }
+ }
+
+ itemsHTML += '</table>';
+ }
+
+ document.getElementById('cartItems').innerHTML = itemsHTML;
+ document.getElementById('cartPrice').innerHTML = totalPrice + ' ' + currency;
+ }
+
+ function checkout() {
+ scaToursCart.checkout(cartId);
+
+ document.getElementById('packagedTripItems').innerHTML = "";
+ document.getElementById('bespokeTripItems').innerHTML = "";
+ document.getElementById('cartItems').innerHTML = "Thank you for shopping with SCA Tours";
+ document.getElementById('cartPrice').innerHTML = "";
+ searchResponseItems = null;
+ tripItems = null;
+ init();
+ }
+
+ function purchase() {
+ }
+
+</script>
+
+</head>
+
+<body onload="init()" background="">
+ <img src="scatours.png" border="0" />
+ <div id="scatours">
+ <form name="searchForm">
+ <h3>Search for trips, hotels, flights and cars</h3>
+ <br/>
+ <table border="0">
+ <tr>
+ <td>From Location:</td>
+ <td><input type="text" name="fromLocation" value="LGW"></td>
+ <td>To Location:</td>
+ <td><input type="text" name="toLocation" value="FLR"></td>
+ </tr>
+ <tr>
+ <td>Start Date:</td>
+ <td><input type="text" name="fromDate" value="06/12/09"></td>
+ <td>End Date:</td>
+ <td><input type="text" name="toDate" value="13/12/09"></td>
+ </tr>
+ <tr>
+ <td>Number of people:</td>
+ <td><select name="noOfPeople">
+ <option>1
+ <option selected>2
+ <option>3
+ <option>4
+ </select></td>
+ <td/>
+ <td/>
+ </tr>
+ </table>
+ <br/>
+ <input type="button" onClick="searchTravelCatalog()" value="Search">
+ </form>
+ <form name="packagedTripForm">
+ <div id="packagedTripItems"></div>
+ </form>
+ <form name="bespokeTripForm">
+ <div id="bespokeTripItems"></div>
+ </form>
+ <form name="cartForm">
+ <h3>Shopping Cart</h3>
+ <div id="cartItems"></div>
+ <br/>
+ Total Price: <div id="cartPrice"></div>
+ <br/>
+ <input type="button" onClick="checkout()" value="Checkout">
+ </form>
+ </div>
+
+</body>
+</html>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.odg b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.odg
new file mode 100644
index 0000000000..8466377374
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.odg
Binary files differ
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.png b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.png
new file mode 100644
index 0000000000..563bf4ea91
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/scatours.png
Binary files differ
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/style.css b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/style.css
new file mode 100644
index 0000000000..6e17c2747b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/fullapp-ui/src/main/resources/style.css
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+
+/*******************************************/
+
+p,table,li,h1,h2,h3
+{
+font-family: verdana, arial, 'sans serif';
+}
+
+p, h1, h2, h3, table, li, hr
+{
+margin-left: 10pt;
+}
+
+table
+{
+border-color: black;
+border-collapse: separate;
+border-spacing: 0px 1px;
+
+margin-right: 10pt;
+margin-left: 10pt;
+width: 800px;
+}
+
+.sourceDetailsTable
+{
+width: 600px;
+}
+
+tr, td
+{
+margin-left: 0pt;
+margin-right: 0pt;
+padding-left: 10pt;
+font-size: 90%;
+}
+
+p,li,th
+{
+font-size: 90%;
+margin-left: 10pt;
+}
+
+pre
+{
+margin-left: 10pt;
+}
+
+body
+{
+#ffffff;
+}
+
+h1,h2,h3,hr
+{
+color: firebrick;
+}
+
+a:link {COLOR: firebrick;}
+a:visited {COLOR: firebrick;}
+a:active {COLOR: navy;}
+
+.link
+{
+COLOR: firebrick;
+text-decoration: underline;
+}
+
+.clickable
+{
+cursor: pointer
+}
+
+.unread_title
+{
+font-weight: bold;
+}
+
+.read_title
+{
+font-weight: normal;
+}
+
+.summary
+{
+color: DimGrey;
+}
+
+.hidden
+{
+display: none;
+}
+
+.source_name
+{
+width: 600px;
+}
+
+.alert_text
+{
+width: 600px;
+}
+
+.alert_data
+{
+margin-left: 10px;
+width: 800px;
+height: 800px;
+}
+
+.source_0
+{
+background-color: LightGreen;
+}
+
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/build.xml
new file mode 100644
index 0000000000..7f77b9270d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-help-pages" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/pom.xml
new file mode 100644
index 0000000000..cf8985ffe7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-help-pages</artifactId>
+ <name>Apache Tuscany SCA Tours Help Pages Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-resource-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-http-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-tomcat</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..038f9260b4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.resource uri="help_pages"/>
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help-pages.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help-pages.composite
new file mode 100644
index 0000000000..1ef8c0a6b1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help-pages.composite
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://www.tuscanyscatours.com/"
+ name="helpPages">
+
+ <component name="Help">
+ <tuscany:implementation.resource location="help_pages"/>
+ <service name="Resource">
+ <tuscany:binding.http uri="http://localhost:8085/help/"/>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHoliday.html b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHoliday.html
new file mode 100644
index 0000000000..194ecd1183
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHoliday.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<!--
+ * 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.
+ -->
+
+<head>
+<title>Tuscany SCA Tours Help - Booking a holiday</title>
+</head>
+
+<body>
+<h1>Tuscany SCA Tours Help Pages - Booking a holiday</h1>
+
+<p>This page contains instructions on how to book a holiday with SCA Tours</p>
+
+<p>More help text would go here.....</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHotel.html b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHotel.html
new file mode 100644
index 0000000000..bde4d25226
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/BookingAHotel.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<!--
+ * 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.
+ -->
+
+<head>
+<title>Tuscany SCA Tours Help - Booking a hotel</title>
+</head>
+
+<body>
+<h1>Tuscany SCA Tours Help Pages - Booking a hotel</h1>
+
+<p>This page contains instructions on how to book a hotel with SCA Tours</p>
+
+<p>More help text would go here.....</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/MakingPayments.html b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/MakingPayments.html
new file mode 100644
index 0000000000..a1b24f4d23
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/MakingPayments.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<!--
+ * 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.
+ -->
+
+<head>
+<title>Tuscany SCA Tours Help - Making Payments</title>
+</head>
+
+<body>
+<h1>Tuscany SCA Tours Help Pages - Making Payments</h1>
+
+<p>This page contains instructions on how to make payments to SCA Tours</p>
+
+<p>More help text would go here.....</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/index.html b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/index.html
new file mode 100644
index 0000000000..4972752ea1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/help-pages/src/main/resources/help_pages/index.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<!--
+ * 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.
+ -->
+
+<head>
+<title>Tuscany SCA Tours Help</title>
+</head>
+
+<body>
+<h1>Tuscany SCA Tours Help Pages</h1>
+
+<p>Welcome to the Tuscany SCA Tours help pages.</p>
+<p>How can we help you?</p>
+
+<h3>Making a booking</h3>
+<ul>
+<li><a href="BookingAHoliday.html">Booking a holiday</a></li>
+<li><a href="BookingAHotel.html">Booking a hotel</a></li>
+<li>Booking a car</li>
+</ul>
+
+<h3>Making payments</h3>
+<ul>
+<li><a href="MakingPayments.html">Paying for my bookings</a></li>
+<li>Checking the status of my payment</li>
+</ul>
+
+<h3>Preparing to travel</h3>
+<ul>
+<li>Passports and Visas</li>
+<li>Pre-travel health checks</li>
+<li>Things to pack checklist</li>
+</ul>
+
+<h3>Contact customer support</h3>
+<ul>
+<li>By Email</li>
+<li>By Phone</li>
+<li>By Post</li>
+</ul>
+</body>
+</html> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/build.xml
new file mode 100644
index 0000000000..f624c43a01
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/build.xml
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-hotel" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/pom.xml
new file mode 100644
index 0000000000..edba61164c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/pom.xml
@@ -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>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-hotel</artifactId>
+ <name>Apache Tuscany SCA Tours Hotel Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelInfo.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelInfo.java
new file mode 100644
index 0000000000..e2912c50fc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelInfo.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.hotel;
+
+public class HotelInfo {
+
+ private String name;
+ private String description;
+ private String location;
+ private String date;
+ private String beds;
+ private double pricePerBed;
+ private String currency;
+ private String link;
+
+ public HotelInfo() {
+ }
+
+ public HotelInfo(String name,
+ String description,
+ String location,
+ String date,
+ String beds,
+ double pricePerBed,
+ String currency,
+ String link) {
+
+ this.name = name;
+ this.description = description;
+ this.location = location;
+ this.date = date;
+ this.beds = beds;
+ this.pricePerBed = pricePerBed;
+ this.currency = currency;
+ this.link = link;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getBeds() {
+ return beds;
+ }
+
+ public void setBeds(String beds) {
+ this.beds = beds;
+ }
+
+ public double getPricePerBed() {
+ return pricePerBed;
+ }
+
+ public void setPricePerBed(double pricePerBed) {
+ this.pricePerBed = pricePerBed;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelManagement.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelManagement.java
new file mode 100644
index 0000000000..476da9a544
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/HotelManagement.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.hotel;
+
+public interface HotelManagement {
+ void addHotelInfo(HotelInfo hotelInfo);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/impl/HotelImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/impl/HotelImpl.java
new file mode 100644
index 0000000000..fe8953ea0e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/java/com/tuscanyscatours/hotel/impl/HotelImpl.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.hotel.impl;
+
+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 com.tuscanyscatours.common.Book;
+import com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+import com.tuscanyscatours.hotel.HotelInfo;
+import com.tuscanyscatours.hotel.HotelManagement;
+
+/**
+ * An implementation of the Hotel service
+ */
+@Scope("STATELESS")
+@Service(interfaces = {Search.class, Book.class, HotelManagement.class})
+public class HotelImpl implements Search, Book, HotelManagement {
+
+ private List<HotelInfo> hotels = new ArrayList<HotelInfo>();
+
+ @Callback
+ protected SearchCallback searchCallback;
+
+ @Init
+ public void init() {
+ hotels.add(new HotelInfo("Deep Bay Hotel", "Wonderful sea views and a relaxed atmosphere", "FLR", "06/12/09",
+ "200", 100, "EUR", "http://localhost:8085/tbd"));
+ hotels.add(new HotelInfo("Long Bay Hotel", "Friendly staff and an ocean breeze", "FLR", "06/12/09", "200", 100,
+ "EUR", "http://localhost:8085/tbd"));
+ hotels.add(new HotelInfo("City Hotel", "Smart rooms and early breakfasts", "FLR", "06/12/09", "200", 100,
+ "EUR", "http://localhost:8085/tbd"));
+ hotels.add(new HotelInfo("County Hotel", "The smell of the open country", "FLR", "06/12/09", "200", 100, "EUR",
+ "http://localhost:8085/tbd"));
+ }
+
+ public TripItem[] searchSynch(TripLeg tripLeg) {
+ List<TripItem> items = new ArrayList<TripItem>();
+
+ // find available hotels
+ for (HotelInfo hotel : hotels) {
+ if (hotel.getLocation().equals(tripLeg.getToLocation())) {
+ TripItem item =
+ new TripItem("", "", TripItem.HOTEL, hotel.getName(), hotel.getDescription(), hotel.getLocation(),
+ tripLeg.getFromDate(), tripLeg.getToDate(), hotel.getPricePerBed(), hotel
+ .getCurrency(), hotel.getLink());
+ items.add(item);
+ }
+ }
+
+ return items.toArray(new TripItem[items.size()]);
+ }
+
+ public void searchAsynch(TripLeg tripLeg) {
+ System.out.println("Starting hotel search");
+
+ // pretend that this processing takes some time to complete
+ try {
+ Thread.sleep(3000);
+ } catch (Exception ex) {
+ // do nothing
+ }
+
+ // return available hotels
+ TripItem[] items = searchSynch(tripLeg);
+ searchCallback.searchResults(items);
+ }
+
+ public int getPercentComplete() {
+ return 100;
+ }
+
+ public String book(TripItem tripItem) {
+ return "hotel1";
+ }
+
+ public void addHotelInfo(HotelInfo hotelInfo) {
+ hotels.add(hotelInfo);
+ System.out.println("Added hotel info - " + hotelInfo.getName());
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..40382221a5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/hotel/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.common"/>
+ <export.java package="com.tuscanyscatours.hotel"/>
+ <export.java package="com.tuscanyscatours.hotel.impl"/>
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/build.xml
new file mode 100644
index 0000000000..0d03b5401d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/build.xml
@@ -0,0 +1,28 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-interaction-client" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../calendar/target/scatours-contribution-calendar.jar"/>
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ <pathelement path="../currency/target/scatours-contribution-currency.jar"/>
+ <pathelement path="../shoppingcart/target/scatours-contribution-shoppingcart.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/pom.xml
new file mode 100644
index 0000000000..3005f3512c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-interaction-client</artifactId>
+ <name>Apache Tuscany SCA Tours Interaction Client Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-calendar</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-hotel</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-currency</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-shoppingcart</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionConversationClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionConversationClientImpl.java
new file mode 100644
index 0000000000..290e6e6aee
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionConversationClientImpl.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.shoppingcart.CartStore;
+
+@Scope("COMPOSITE")
+@Service(Runnable.class)
+public class InteractionConversationClientImpl implements Runnable {
+
+ @Reference
+ protected CartStore cartStoreConversation;
+
+ public void run() {
+ System.out.println("\nCalling cart store using the conversational interaction pattern");
+
+ // add some trip items to the cart store
+ TripItem tripItem = getTestTripItem();
+ cartStoreConversation.addTrip(tripItem);
+
+ tripItem.setDescription("2nd trip item");
+ cartStoreConversation.addTrip(tripItem);
+
+ tripItem.setDescription("3rd trip item");
+ cartStoreConversation.addTrip(tripItem);
+
+ System.out.println("Trip items now in cart");
+ TripItem[] tripItems = cartStoreConversation.getTrips();
+ for (TripItem item : tripItems) {
+ System.out.println("Item - " + item.getDescription());
+ }
+
+ System.out.println("Reset the cart");
+ cartStoreConversation.reset();
+
+ System.out.println("Trip items now in cart");
+ tripItems = cartStoreConversation.getTrips();
+ for (TripItem item : tripItems) {
+ System.out.println("Item - " + item.getDescription());
+ }
+ }
+
+ private TripItem getTestTripItem() {
+ TripItem tripItem = new TripItem();
+ tripItem.setLocation("FLR");
+ tripItem.setFromDate("06/12/09 00:00");
+ tripItem.setToDate("13/12/09 00:00");
+ tripItem.setDescription("1st trip item");
+ return tripItem;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionLocalClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionLocalClientImpl.java
new file mode 100644
index 0000000000..ca3cb2874a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionLocalClientImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.calendar.Calendar;
+import com.tuscanyscatours.common.TripLeg;
+
+@Service(Runnable.class)
+public class InteractionLocalClientImpl implements Runnable {
+
+ @Reference
+ protected Calendar calendarLocal;
+
+ public void run() {
+ System.out.println("\nCalling calendar component over a local binding");
+ TripLeg tripLeg = getTestTripLeg();
+ String toDate = calendarLocal.getEndDate(tripLeg.getFromDate(), 10);
+ tripLeg.setToDate(toDate);
+ System.out.println("Calculated trip end date - " + toDate);
+ ;
+ }
+
+ private TripLeg getTestTripLeg() {
+ TripLeg tripLeg = new TripLeg();
+ tripLeg.setFromLocation("LGW");
+ tripLeg.setToLocation("FLR");
+ tripLeg.setFromDate("06/12/09 00:00");
+ tripLeg.setToDate("13/12/09 00:00");
+ tripLeg.setNoOfPeople("1");
+ tripLeg.setId("TRIP27");
+ return tripLeg;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionOneWayCallbackClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionOneWayCallbackClientImpl.java
new file mode 100644
index 0000000000..9689ce8e0c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionOneWayCallbackClientImpl.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.client.impl;
+
+import java.util.concurrent.CountDownLatch;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+@Scope("COMPOSITE")
+@Service(Runnable.class)
+public class InteractionOneWayCallbackClientImpl implements Runnable, SearchCallback {
+
+ @Reference
+ protected Search hotelSearchOneWayCallback;
+
+ CountDownLatch resultsReceivedCountdown;
+
+ public void run() {
+ System.out.println("\nCalling hotel component using both one way and callback interation patterns");
+ resultsReceivedCountdown = new CountDownLatch(1);
+ TripLeg tripLeg = getTestTripLeg();
+ hotelSearchOneWayCallback.searchAsynch(tripLeg);
+
+ // start other searched here while the hotel search progresses
+
+ // wait for responses to come back
+ try {
+ resultsReceivedCountdown.await();
+ } catch (InterruptedException ex) {
+ }
+ }
+
+ public void searchResults(TripItem[] items) {
+ for (TripItem tripItem : items) {
+ System.out.println("Found hotel - " + tripItem.getName());
+ }
+ resultsReceivedCountdown.countDown();
+ }
+
+ public void setPercentComplete(String searchComponent, int percentComplete) {
+ // Not used in this sample
+ }
+
+ private TripLeg getTestTripLeg() {
+ TripLeg tripLeg = new TripLeg();
+ tripLeg.setFromLocation("LGW");
+ tripLeg.setToLocation("FLR");
+ tripLeg.setFromDate("06/12/09 00:00");
+ tripLeg.setToDate("13/12/09 00:00");
+ tripLeg.setNoOfPeople("1");
+ tripLeg.setId("TRIP27");
+ return tripLeg;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRemoteClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRemoteClientImpl.java
new file mode 100644
index 0000000000..1fd9d9cbe8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRemoteClientImpl.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+@Service(Runnable.class)
+public class InteractionRemoteClientImpl implements Runnable, SearchCallback {
+
+ @Reference
+ protected Search hotelSearchRemote;
+
+ public void run() {
+ System.out.println("\nCalling hotel component over a remote binding");
+ TripLeg tripLeg = getTestTripLeg();
+ TripItem[] tripItems = hotelSearchRemote.searchSynch(tripLeg);
+ for (TripItem tripItem : tripItems) {
+ System.out.println("Found hotel - " + tripItem.getName());
+ }
+ }
+
+ public void searchResults(TripItem[] items) {
+ // we are calling the hotel component synchronously here
+ // so the callback interface is not used
+ }
+
+ public void setPercentComplete(String searchComponent, int percentComplete) {
+ // Not used in this sample
+ }
+
+ private TripLeg getTestTripLeg() {
+ TripLeg tripLeg = new TripLeg();
+ tripLeg.setFromLocation("LGW");
+ tripLeg.setToLocation("FLR");
+ tripLeg.setFromDate("06/12/09 00:00");
+ tripLeg.setToDate("13/12/09 00:00");
+ tripLeg.setNoOfPeople("1");
+ tripLeg.setId("TRIP27");
+ return tripLeg;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRequestResponseClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRequestResponseClientImpl.java
new file mode 100644
index 0000000000..d1438434ae
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionRequestResponseClientImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.currencyconverter.CurrencyConverter;
+
+@Service(Runnable.class)
+public class InteractionRequestResponseClientImpl implements Runnable {
+
+ @Reference
+ protected CurrencyConverter currencyConverterRequestResponse;
+
+ public void run() {
+ System.out.println("\nCalling currency converter component using request response interation pattern");
+ double exchangeRate = currencyConverterRequestResponse.getExchangeRate("GBP", "USD");
+ System.out.println("GBP to USD exchange rate is " + exchangeRate);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionStatefulCallbackClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionStatefulCallbackClientImpl.java
new file mode 100644
index 0000000000..87cea904ac
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/java/scatours/client/impl/InteractionStatefulCallbackClientImpl.java
@@ -0,0 +1,98 @@
+/*
+ * 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.client.impl;
+
+import java.util.concurrent.CountDownLatch;
+
+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 com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+@Scope("CONVERSATION")
+@Service(Runnable.class)
+public class InteractionStatefulCallbackClientImpl implements Runnable, SearchCallback {
+
+ @Reference
+ protected Search flightSearchStatefulCallback;
+
+ @Context
+ protected ComponentContext componentContext;
+
+ CountDownLatch resultsReceivedCountdown;
+
+ public void run() {
+ System.out.println("\nCalling flight component using stateful callback interation pattern");
+ resultsReceivedCountdown = new CountDownLatch(1);
+ TripLeg tripLeg = getTestTripLeg();
+
+ ServiceReference<Search> dynamicFlightSearchStatefulCallback =
+ componentContext.getServiceReference(Search.class, "flightSearchStatefulCallback");
+ dynamicFlightSearchStatefulCallback.setConversationID("SomeUniqeID");
+ Search flightSearch = dynamicFlightSearchStatefulCallback.getService();
+
+ flightSearch.searchAsynch(tripLeg);
+
+ // wait for a while and see how the flight search is getting one
+ try {
+ Thread.sleep(1200);
+ } catch (Exception ex) {
+ // do nothing
+ }
+ System.out.println("Flight search is " + flightSearch.getPercentComplete() + "% complete");
+
+ // wait for responses to come back
+ try {
+ resultsReceivedCountdown.await();
+ } catch (InterruptedException ex) {
+ }
+ }
+
+ public void searchResults(TripItem[] items) {
+ System.out.println("Received results in conversation - " + componentContext.getRequestContext()
+ .getServiceReference().getConversation().getConversationID());
+ for (TripItem tripItem : items) {
+ System.out.println("Found flight - " + tripItem.getName());
+ }
+ resultsReceivedCountdown.countDown();
+ }
+
+ public void setPercentComplete(String searchComponent, int percentComplete) {
+ System.out.println(searchComponent + " search is " + percentComplete + "% complete");
+ }
+
+ private TripLeg getTestTripLeg() {
+ TripLeg tripLeg = new TripLeg();
+ tripLeg.setFromLocation("LGW");
+ tripLeg.setToLocation("FLR");
+ tripLeg.setFromDate("06/12/09");
+ tripLeg.setToDate("13/12/09");
+ tripLeg.setNoOfPeople("1");
+ tripLeg.setId("TRIP27");
+ return tripLeg;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..283a1588df
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tours="http://tucsanyscatours.com/">
+ <import.java package="com.tuscanyscatours.calendar" />
+ <import.java package="com.tuscanyscatours.calendar.impl" />
+ <import.java package="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.currencyconverter.impl" />
+ <import.java package="com.tuscanyscatours.shoppingcart" />
+ <import.java package="com.tuscanyscatours.shoppingcart.impl" />
+ <deployable composite="tours:client" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/client.composite
new file mode 100644
index 0000000000..7caa8e7bb8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-client/src/main/resources/client.composite
@@ -0,0 +1,90 @@
+<?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://tuscanyscatours.com/"
+ name="Client">
+
+ <!-- Local interaction -->
+ <component name="InteractionLocalClient">
+ <implementation.java class="scatours.client.impl.InteractionLocalClientImpl" />
+ <reference name="calendarLocal"
+ target="Calendar"/>
+ </component>
+
+ <component name="Calendar">
+ <implementation.java class="com.tuscanyscatours.calendar.impl.CalendarImpl"/>
+ </component>
+
+ <!-- Remote interaction -->
+ <component name="InteractionRemoteClient">
+ <implementation.java class="scatours.client.impl.InteractionRemoteClientImpl" />
+ <reference name="hotelSearchRemote">
+ <binding.ws uri="http://localhost:8081/Hotel/Search"/>
+ </reference>
+ </component>
+
+ <!-- Request response interaction -->
+ <component name="InteractionRequestResponseClient">
+ <implementation.java class="scatours.client.impl.InteractionRequestResponseClientImpl" />
+ <reference name="currencyConverterRequestResponse" target="CurrencyConverter"/>
+ </component>
+
+ <component name="CurrencyConverter">
+ <implementation.java class="com.tuscanyscatours.currencyconverter.impl.CurrencyConverterImpl"/>
+ </component>
+
+ <!-- One way and callback interaction -->
+ <component name="InteractionOneWayCallbackClient">
+ <implementation.java class="scatours.client.impl.InteractionOneWayCallbackClientImpl" />
+ <reference name="hotelSearchOneWayCallback">
+ <interface.java interface="com.tuscanyscatours.common.Search"
+ callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8081/Hotel/Search"/>
+ <callback>
+ <binding.ws name="callback" uri="http://localhost:8080/Client/SearchCallback"/>
+ </callback>
+ </reference>
+ </component>
+
+ <!-- Conversational interaction -->
+ <component name="InteractionConversationClient">
+ <implementation.java class="scatours.client.impl.InteractionConversationClientImpl" />
+ <reference name="cartStoreConversation" target="CartStore"/>
+ </component>
+
+ <component name="CartStore">
+ <implementation.java class="com.tuscanyscatours.shoppingcart.impl.CartStoreImpl"/>
+ <service name="CartStore"/>
+ </component>
+
+ <!-- Stateful callback interaction -->
+ <component name="InteractionStatefulCallbackClient">
+ <implementation.java class="scatours.client.impl.InteractionStatefulCallbackClientImpl" />
+ <reference name="flightSearchStatefulCallback">
+ <interface.java interface="com.tuscanyscatours.common.Search"
+ callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8081/Hotel/SearchConversational"/>
+ <callback>
+ <binding.ws name="callback" uri="http://localhost:8080/Client/SearchCallbackConversational"/>
+ </callback>
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/build.xml
new file mode 100644
index 0000000000..10451b6248
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-interaction-service-remote" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/pom.xml
new file mode 100644
index 0000000000..42febd7986
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-interaction-service-remote</artifactId>
+ <name>Apache Tuscany SCA Tours Interaction Service Remote Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-flight</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-hotel</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..c26d63563b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/META-INF/sca-contribution.xml
@@ -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"
+ xmlns:tours="http://com.tuscanyscatours/">
+ <import.java package="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.flight.impl" />
+ <import.java package="com.tuscanyscatours.hotel.impl" />
+ <deployable composite="tours:service" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/service.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/service.composite
new file mode 100644
index 0000000000..0f368da1ed
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/interaction-service-remote/src/main/resources/service.composite
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="Service">
+
+ <component name="Hotel">
+ <implementation.java class="com.tuscanyscatours.hotel.impl.HotelImpl"/>
+ <service name="Search">
+ <interface.java interface="com.tuscanyscatours.common.Search"
+ callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8081/Hotel/Search"/>
+ <callback>
+ <binding.ws name="callback"/>
+ </callback>
+ </service>
+ </component>
+
+ <component name="Flight">
+ <implementation.java class="com.tuscanyscatours.flight.impl.FlightImpl"/>
+ <service name="Search">
+ <interface.java interface="com.tuscanyscatours.common.Search"
+ callbackInterface="com.tuscanyscatours.common.SearchCallback"/>
+ <binding.ws uri="http://localhost:8081/Hotel/SearchConversational"/>
+ <callback>
+ <binding.ws name="callback"/>
+ </callback>
+ </service>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/build.xml
new file mode 100644
index 0000000000..6a85f2066e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/build.xml
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-introducing-client" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../introducing-tours/target/scatours-contribution-introducing-tours.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/pom.xml
new file mode 100644
index 0000000000..6abf8cd0c0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-introducing-client</artifactId>
+ <name>Apache Tuscany SCA Tours Introducing Client Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-introducing-tours</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/java/scatours/client/impl/TestClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/java/scatours/client/impl/TestClientImpl.java
new file mode 100644
index 0000000000..f81a2c7304
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/java/scatours/client/impl/TestClientImpl.java
@@ -0,0 +1,47 @@
+/*
+ * 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.client.impl;
+
+import java.math.BigDecimal;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.Bookings;
+import com.tuscanyscatours.Checkout;
+
+@Service(Runnable.class)
+public class TestClientImpl {
+ @Reference
+ protected Bookings bookings;
+
+ @Reference
+ protected Checkout checkout;
+
+ public TestClientImpl() {
+ }
+
+ public void run() {
+ String bookingCode = bookings.newBooking("FS1APR4", 1);
+ System.out.println("Booking code is " + bookingCode);
+
+ checkout.makePayment(new BigDecimal("1995.00"), "1234567843218765 10/10");
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..9ce11f16ef
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:client="http://client.scatours/">
+ <import.java package="com.tuscanyscatours" />
+ <deployable composite="client:Client" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/client.composite
new file mode 100644
index 0000000000..3a404eb10d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-client/src/main/resources/client.composite
@@ -0,0 +1,29 @@
+<?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://client.scatours/"
+ name="Client">
+
+ <component name="TestClient">
+ <implementation.java class="scatours.client.impl.TestClientImpl" />
+ <reference name="bookings" target="TripBooking/Bookings" />
+ <reference name="checkout" target="ShoppingCart/Checkout" />
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/build.xml
new file mode 100644
index 0000000000..f269f6577b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-introducing-tours" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/pom.xml
new file mode 100644
index 0000000000..90839f94d4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-introducing-tours</artifactId>
+ <name>Apache Tuscany SCA Tours Introducing Tours Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/goodvaluetrips/Trips.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/goodvaluetrips/Trips.java
new file mode 100644
index 0000000000..365a210368
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/goodvaluetrips/Trips.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.goodvaluetrips;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Trips {
+ String checkAvailability(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Bookings.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Bookings.java
new file mode 100644
index 0000000000..9d54d46bb6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Bookings.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Bookings {
+ String newBooking(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Checkout.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Checkout.java
new file mode 100644
index 0000000000..29c84d2bc0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Checkout.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import java.math.BigDecimal;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Checkout {
+ void makePayment(BigDecimal amount, String cardInfo);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Updates.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Updates.java
new file mode 100644
index 0000000000..e33b0399cb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/Updates.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Updates {
+ void addTrip(String resCode);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java
new file mode 100644
index 0000000000..629ea7b5ec
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/ShoppingCartImpl.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.impl;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.tuscanyscatours.Checkout;
+import com.tuscanyscatours.Updates;
+
+public class ShoppingCartImpl implements Checkout, Updates {
+ private static List<String> bookedTrips = new ArrayList<String>();
+
+ protected String currency = "USD";
+
+ public void makePayment(BigDecimal amount, String cardInfo) {
+ System.out.print("Charged " + currency + " " + amount
+ + " to card "
+ + cardInfo
+ + " for "
+ + (bookedTrips.size() > 1 ? "trips" : "trip"));
+ for (String trip : bookedTrips) {
+ System.out.print(" " + trip);
+ }
+ System.out.println();
+ bookedTrips.clear();
+ }
+
+ public void addTrip(String resCode) {
+ bookedTrips.add(resCode);
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java
new file mode 100644
index 0000000000..f2884f87c5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/java/com/tuscanyscatours/impl/TripBookingImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.impl;
+
+import org.osoa.sca.annotations.Reference;
+
+import com.goodvaluetrips.Trips;
+import com.tuscanyscatours.Bookings;
+import com.tuscanyscatours.Updates;
+
+public class TripBookingImpl implements Bookings {
+ @Reference
+ protected Trips mytrips;
+
+ @Reference
+ protected Updates cart;
+
+ public String newBooking(String trip, int people) {
+ String resCode = mytrips.checkAvailability(trip, people);
+ cart.addTrip(resCode);
+ return "GV" + resCode;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..5f76588dad
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tst="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours" />
+ <deployable composite="tst:Tours" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/tours.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/tours.composite
new file mode 100644
index 0000000000..6d47793aa4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-tours/src/main/resources/tours.composite
@@ -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://tuscanyscatours.com/"
+ name="Tours">
+
+ <component name="TripBooking">
+ <implementation.java class="com.tuscanyscatours.impl.TripBookingImpl" />
+ <service name="Bookings">
+ <interface.java interface="com.tuscanyscatours.Bookings" />
+ </service>
+ <reference name="mytrips" target="TripProvider/Trips">
+ <interface.java interface="com.goodvaluetrips.Trips" />
+ </reference>
+ <reference name="cart" target="ShoppingCart/Updates">
+ <interface.java interface="com.tuscanyscatours.Updates" />
+ </reference>
+ </component>
+
+ <component name="ShoppingCart">
+ <implementation.java class="com.tuscanyscatours.impl.ShoppingCartImpl"/>
+ <service name="Checkout">
+ <interface.java interface="com.tuscanyscatours.Checkout" />
+ </service>
+ <service name="Updates">
+ <interface.java interface="com.tuscanyscatours.Updates" />
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/build.xml
new file mode 100644
index 0000000000..9d65c703b7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-introducing-trips" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/pom.xml
new file mode 100644
index 0000000000..d586861b6b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-introducing-trips</artifactId>
+ <name>Apache Tuscany SCA Tours Introducing Trips Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/Trips.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/Trips.java
new file mode 100644
index 0000000000..365a210368
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/Trips.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.goodvaluetrips;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Trips {
+ String checkAvailability(String trip, int people);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/impl/TripProviderImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/impl/TripProviderImpl.java
new file mode 100644
index 0000000000..06f93f2637
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/java/com/goodvaluetrips/impl/TripProviderImpl.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.goodvaluetrips.impl;
+
+import com.goodvaluetrips.Trips;
+
+public class TripProviderImpl implements Trips {
+ public String checkAvailability(String trip, int people) {
+ // call non-SCA code to reserve trip and return booking code
+ return "6R98Y";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..85e064b1a2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:gvt="http://goodvaluetrips.com/">
+ <export namespace="http://goodvaluetrips.com/" />
+ <deployable composite="gvt:Trips" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/trips.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/trips.composite
new file mode 100644
index 0000000000..8d1db35b1f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/introducing-trips/src/main/resources/trips.composite
@@ -0,0 +1,30 @@
+<?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://goodvaluetrips.com/"
+ name="Trips">
+
+ <component name="TripProvider">
+ <implementation.java class="com.goodvaluetrips.impl.TripProviderImpl" />
+ <service name="Trips">
+ <interface.java interface="com.goodvaluetrips.Trips" />
+ </service>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/build.xml
new file mode 100644
index 0000000000..1baf6ab153
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-notification-corba" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/pom.xml
new file mode 100644
index 0000000000..97270535fc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-notification-corba</artifactId>
+ <name>Apache Tuscany SCA Tours Notification Contribution Which Uses SMSGateway CORBA Service</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..373d1494f6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.notification" />
+ <import.java package="com.tuscanyscatours.notification.impl" />
+ <import.java package="com.tuscanyscatours.smsgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/notification-corba.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/notification-corba.composite
new file mode 100644
index 0000000000..8baca02509
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-corba/src/main/resources/notification-corba.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="notification">
+
+ <component name="Notification">
+ <implementation.java class="com.tuscanyscatours.notification.impl.NotificationImpl" />
+ <service name="Notification">
+ <interface.java interface="com.tuscanyscatours.notification.Notification"/>
+ </service>
+
+ <reference name="smsGateway">
+ <interface.java interface="com.tuscanyscatours.smsgateway.SMSGateway"/>
+ <tuscany:binding.corba host="localhost" port="5080" name="SMSGatewayCORBAService"/>
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/build.xml
new file mode 100644
index 0000000000..3b7e660a5d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-notification-ejb" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/pom.xml
new file mode 100644
index 0000000000..4838978d1c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-notification-ejb</artifactId>
+ <name>Apache Tuscany SCA Tours Notification Contribution Which Uses SMSGateway EJB Service</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..373d1494f6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.notification" />
+ <import.java package="com.tuscanyscatours.notification.impl" />
+ <import.java package="com.tuscanyscatours.smsgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/notification-ejb.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/notification-ejb.composite
new file mode 100644
index 0000000000..11b632fd79
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ejb/src/main/resources/notification-ejb.composite
@@ -0,0 +1,35 @@
+<?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://tuscanyscatours.com/"
+ name="notification">
+
+ <component name="Notification">
+ <implementation.java class="com.tuscanyscatours.notification.impl.NotificationImpl" />
+ <service name="Notification">
+ <interface.java interface="com.tuscanyscatours.notification.Notification"/>
+ </service>
+
+ <reference name="smsGateway">
+ <interface.java interface="com.tuscanyscatours.smsgateway.SMSGateway"/>
+ <binding.ejb uri="SMSGatewayImplRemote"/>
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/build.xml
new file mode 100644
index 0000000000..0b1b80c44f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-notification-jms" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/pom.xml
new file mode 100644
index 0000000000..51c70da9b0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-notification-jms</artifactId>
+ <name>Apache Tuscany SCA Tours Notification Contribution Which Uses SMSGateway JMS Service</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..373d1494f6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.notification" />
+ <import.java package="com.tuscanyscatours.notification.impl" />
+ <import.java package="com.tuscanyscatours.smsgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/notification-jms.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/notification-jms.composite
new file mode 100644
index 0000000000..dfd96ae918
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-jms/src/main/resources/notification-jms.composite
@@ -0,0 +1,41 @@
+<?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://tuscanyscatours.com/"
+ name="notification">
+
+ <component name="Notification">
+ <implementation.java class="com.tuscanyscatours.notification.impl.NotificationImpl" />
+ <service name="Notification">
+ <interface.java interface="com.tuscanyscatours.notification.Notification"/>
+ </service>
+
+ <reference name="smsGateway">
+ <interface.java interface="com.tuscanyscatours.smsgateway.SMSGateway"/>
+ <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+ jndiURL="tcp://localhost:61619">
+ <destination name="SMSRequestQueue" create="ifnotexist"/>
+ <response>
+ <destination name="SMSResponseQueue" create="ifnotexist"/>
+ </response>
+ </binding.jms>
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/build.xml
new file mode 100644
index 0000000000..de8d5bbb06
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-notification-rmi" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/pom.xml
new file mode 100644
index 0000000000..2d9761ad29
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-notification-rmi</artifactId>
+ <name>Apache Tuscany SCA Tours Notification Contribution Which Uses SMSGateway RMI Service</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..373d1494f6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.notification" />
+ <import.java package="com.tuscanyscatours.notification.impl" />
+ <import.java package="com.tuscanyscatours.smsgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/notification-rmi.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/notification-rmi.composite
new file mode 100644
index 0000000000..e80c381b55
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-rmi/src/main/resources/notification-rmi.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="notification">
+
+ <component name="Notification">
+ <implementation.java class="com.tuscanyscatours.notification.impl.NotificationImpl" />
+ <service name="Notification">
+ <interface.java interface="com.tuscanyscatours.notification.Notification"/>
+ </service>
+
+ <reference name="smsGateway">
+ <interface.java interface="com.tuscanyscatours.smsgateway.SMSGateway"/>
+ <tuscany:binding.rmi host="localhost" port="8099" serviceName="SMSGatewayRMI"/>
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/build.xml
new file mode 100644
index 0000000000..bac935bc5a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-notification-ws" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/pom.xml
new file mode 100644
index 0000000000..6d4bf325d3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-notification-ws</artifactId>
+ <name>Apache Tuscany SCA Tours Notification Contribution Which Uses SMSGateway Web Service</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..373d1494f6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.notification" />
+ <import.java package="com.tuscanyscatours.notification.impl" />
+ <import.java package="com.tuscanyscatours.smsgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/notification-ws.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/notification-ws.composite
new file mode 100644
index 0000000000..e2051ad612
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification-ws/src/main/resources/notification-ws.composite
@@ -0,0 +1,35 @@
+<?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://tuscanyscatours.com/"
+ name="notification">
+
+ <component name="Notification">
+ <implementation.java class="com.tuscanyscatours.notification.impl.NotificationImpl" />
+ <service name="Notification">
+ <interface.java interface="com.tuscanyscatours.notification.Notification" />
+ </service>
+
+ <reference name="smsGateway">
+ <interface.java interface="com.tuscanyscatours.smsgateway.SMSGateway" />
+ <binding.ws uri="http://localhost:8081/SMSGatewayService" />
+ </reference>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/build.xml
new file mode 100644
index 0000000000..ff7e56c8b7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/build.xml
@@ -0,0 +1,22 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-notification" default="compile">
+ <import file="../../antdefs.xml"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/pom.xml
new file mode 100644
index 0000000000..e8d93e1697
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-notification</artifactId>
+ <name>Apache Tuscany SCA Tours Notification Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/Notification.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/Notification.java
new file mode 100644
index 0000000000..7ae26b93e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/Notification.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.notification;
+
+public interface Notification {
+
+ boolean notify(String accountID, String subject, String message);
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/impl/NotificationImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/impl/NotificationImpl.java
new file mode 100644
index 0000000000..58d590242d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/notification/impl/NotificationImpl.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.notification.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.notification.Notification;
+import com.tuscanyscatours.smsgateway.SMSGateway;
+
+@Service(Notification.class)
+public class NotificationImpl implements Notification {
+
+ /**
+ * Use "Fake" phone number that has been reserved by Ofcom.
+ * See: http://www.ofcom.org.uk/telecoms/ioi/numbers/num_drama?a=87101
+ */
+ private static final String SCA_TOURS_SMS = "+44(0)2079460723";
+
+ @Reference
+ protected SMSGateway smsGateway;
+
+ public boolean notify(String accountID, String subject, String message) {
+
+ boolean result = true;
+
+ String sms = getSMSAddress(accountID);
+ if (sms != null) {
+ System.out.println("Sending SMS to " + sms + " for accountID " + accountID);
+ result &= smsGateway.sendSMS(SCA_TOURS_SMS, sms, subject + ". " + message);
+ }
+
+ return result;
+ }
+
+ private String getSMSAddress(String accountID) {
+ // Use "Fake" phone number that has been reserved by Ofcom.
+ // See: http://www.ofcom.org.uk/telecoms/ioi/numbers/num_drama?a=87101
+ return "+44(0)7700900812";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/smsgateway/SMSGateway.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/smsgateway/SMSGateway.java
new file mode 100644
index 0000000000..fdf5872565
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/java/com/tuscanyscatours/smsgateway/SMSGateway.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.smsgateway;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * A gateway to send SMS messages.
+ */
+@Remotable
+public interface SMSGateway {
+ boolean sendSMS(String fromNumber, String toNumber, String text);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..518c7e363b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/notification/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <export.java package="com.tuscanyscatours.notification" />
+ <export.java package="com.tuscanyscatours.notification.impl" />
+ <export.java package="com.tuscanyscatours.smsgateway" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/build.xml
new file mode 100644
index 0000000000..29e317cf4d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/build.xml
@@ -0,0 +1,49 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-payment-bpel" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+
+ <property name="test-setup" value="yes"/>
+ <target name="testsetup">
+ <unzip dest="target/test-classes">
+ <fileset dir="${env.TUSCANY_HOME}/lib">
+ <include name="ode-dao-jpa-ojpa-derby-*.zip"/>
+ </fileset>
+ </unzip>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/log4j.properties b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/log4j.properties
new file mode 100644
index 0000000000..7ed0bcaf77
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/log4j.properties
@@ -0,0 +1,36 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=OFF, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.mortbay=OFF
+log4j.category.org.hibernate.type=OFF
+log4j.category.org.objectweb=OFF
+log4j.category.org.apache.ode.axis2=OFF
+log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=OFF
+log4j.category.org.apache.ode.bpel.epr=OFF
+log4j.category.org.apache.tuscany.sca.implementation.bpel=DEBUG
+log4j.category.org.apache.tuscany.sca.implementation.bpel.ode=DEBUG
+log4j.category.org.apache.tuscany.sca.implementation.bpel.provider=DEBUG
+
+# Console appender
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=[%p] - %C{1}.%M(%L) | %m%n
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/pom.xml
new file mode 100644
index 0000000000..9723a152dd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/pom.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-bpel</artifactId>
+ <name>Apache Tuscany SCA Tours Payment BPEL Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-bpel-ode</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <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.12</version>
+ <executions>
+ <execution>
+ <id>wsimport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-322 -->
+ <version>2.3.1</version>
+ <configuration>
+ <useFile>false</useFile>
+ <trimStackTrace>false</trimStackTrace>
+ <useSystemClassLoader>true</useSystemClassLoader>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>test-compile</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-dao-jpa-ojpa-derby</artifactId>
+ <version>1.1</version>
+ <type>zip</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}/classes/</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..22ef6de317
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ elementFormDefault="unqualified">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8081/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..a097d9b7e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8082/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b458868b09
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment" >
+ <export namespace="http://www.tuscanyscatours.com/Payment"/>
+ <export namespace="http://www.tuscanyscatours.com/Payment/"/>
+ <deployable composite="pp:payment" />
+</contribution> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.bpel b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.bpel
new file mode 100644
index 0000000000..8f11d76888
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.bpel
@@ -0,0 +1,164 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<process name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ xmlns="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:tns="http://tuscany.apache.org/Payment"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment/"
+ xmlns:ccp="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:eg="http://www.tuscanyscatours.com/EmailGateway/"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+ <import location="Payment.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://www.tuscanyscatours.com/Payment/"/>
+
+ <import location="CreditCardPayment.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://www.tuscanyscatours.com/CreditCardPayment/"/>
+
+ <import location="EmailGateway.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"
+ namespace="http://www.tuscanyscatours.com/EmailGateway/"/>
+
+ <partnerLinks>
+ <partnerLink name="paymentPartnerLink" partnerLinkType="pp:PaymentLinkType" myRole="forward" />
+ <partnerLink name="creditCardPaymentPartnerLink" partnerLinkType="ccp:CreditCardPaymentLinkType" partnerRole="forward" initializePartnerRole="yes" />
+ <partnerLink name="emailGatewayPartnerLink" partnerLinkType="eg:EmailGatewayLinkType" partnerRole="forward" initializePartnerRole="yes" />
+ </partnerLinks>
+
+ <variables>
+ <variable name="makePaymentMemberRequestMessage" messageType="pp:MakePaymentMemberRequest"/>
+ <variable name="makePaymentMemberResponseMessage" messageType="pp:MakePaymentMemberResponse"/>
+ <variable name="authorizeRequestMessage" messageType="ccp:AuthorizeRequest"/>
+ <variable name="authorizeResponseMessage" messageType="ccp:AuthorizeResponse"/>
+ <variable name="sendEmailRequestMessage" messageType="eg:SendEmailRequest"/>
+ <variable name="sendEmailResponseMessage" messageType="eg:SendEmailResponse"/>
+ </variables>
+
+ <sequence>
+ <receive name="start"
+ partnerLink="paymentPartnerLink"
+ portType="pp:Payment"
+ operation="makePaymentMember"
+ variable="makePaymentMemberRequestMessage"
+ createInstance="yes"/>
+
+ <!-- set up call to payments service -->
+ <assign name="assign1">
+ <copy>
+ <from>
+ <literal>
+ <authorize xmlns="http://www.tuscanyscatours.com/CreditCardPayment/">
+ <CreditCard xmlns="">
+ <CreditCardType>Visa</CreditCardType>
+ <CreditCardNumber>12345678</CreditCardNumber>
+ <ExpMonth>2</ExpMonth>
+ <ExpYear>2010</ExpYear>
+ <CardOwner>
+ <Name>Empty</Name>
+ <Address>
+ <Street>1 The Road</Street>
+ <City>Winchester</City>
+ <State>Hampshire</State>
+ <ZipCode>AB1 2CD</ZipCode>
+ <HomePhone>12345678</HomePhone>
+ </Address>
+ </CardOwner>
+ </CreditCard>
+ <Amount xmlns="">0.0</Amount>
+ </authorize>
+ </literal>
+ </from>
+ <to>$authorizeRequestMessage.parameters</to>
+ </copy>
+ <copy>
+ <from>$makePaymentMemberRequestMessage.parameters/CustomerId/text()</from>
+ <to>$authorizeRequestMessage.parameters/CreditCard/CardOwner/Name</to>
+ </copy>
+ <copy>
+ <from>$makePaymentMemberRequestMessage.parameters/Amount/text()</from>
+ <to>$authorizeRequestMessage.parameters/Amount</to>
+ </copy>
+ </assign>
+
+ <invoke name="invokeCreditCardPayment"
+ operation="authorize"
+ inputVariable="authorizeRequestMessage"
+ outputVariable="authorizeResponseMessage"
+ partnerLink="creditCardPaymentPartnerLink"
+ portType="ccp:CreditCardPayment" />
+
+ <!-- set up call to email gateway service -->
+ <assign name="assign2">
+ <copy>
+ <from>
+ <literal>
+ <sendEmail xmlns="http://www.tuscanyscatours.com/EmailGateway/">
+ <Email xmlns="">
+ <To>Default</To>
+ <Title>Payment Confirmation</Title>
+ <Body>Your payment has been confirmed</Body>
+ </Email>
+ </sendEmail>
+ </literal>
+ </from>
+ <to>$sendEmailRequestMessage.parameters</to>
+ </copy>
+ <copy>
+ <from>$makePaymentMemberRequestMessage.parameters/CustomerId/text()</from>
+ <to>$sendEmailRequestMessage.parameters/Email/To</to>
+ </copy>
+ </assign>
+
+ <!-- call the email gateway to send a confirmation -->
+ <invoke name="invokeEmailGateway"
+ operation="sendEmail"
+ inputVariable="sendEmailRequestMessage"
+ outputVariable="sendEmailResponseMessage"
+ partnerLink="emailGatewayPartnerLink"
+ portType="eg:EmailGateway" />
+
+ <!-- set up the response -->
+ <assign name="assign3">
+ <copy>
+ <from>
+ <literal>
+ <makePaymentMemberResponse xmlns="http://www.tuscanyscatours.com/Payment">
+ <Status xmlns="">OK</Status>
+ </makePaymentMemberResponse>
+ </literal>
+ </from>
+ <to>$makePaymentMemberResponseMessage.parameters</to>
+ </copy>
+ </assign>
+
+
+ <reply name="end"
+ partnerLink="paymentPartnerLink"
+ portType="pp:Payment"
+ operation="makePaymentMember"
+ variable="makePaymentMemberResponseMessage">
+ </reply>
+ </sequence>
+</process>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.composite
new file mode 100644
index 0000000000..5c337799a7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/main/resources/payment.composite
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.bpel process="pp:Payment"/>
+ <service name="paymentPartnerLink">
+ <interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
+ <binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
+ </service>
+ <reference name="creditCardPaymentPartnerLink">
+ <binding.ws uri="http://localhost:8082/CreditCardPayment"/>
+ </reference>
+ <reference name="emailGatewayPartnerLink">
+ <binding.ws uri="http://localhost:8088/EmailGateway"/>
+ </reference>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..84d628ec5d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+ private static SCANode emailGatewayNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ creditCardNode =
+ SCANodeFactory.newInstance()
+ .createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../creditcard-payment-jaxb/target/classes"));
+
+ creditCardNode.start();
+
+ emailGatewayNode =
+ SCANodeFactory.newInstance().createSCANode("emailgateway.composite",
+ new SCAContribution("emailgateway",
+ "../emailgateway/target/classes"),
+ new SCAContribution("emailgateway-test",
+ "../emailgateway/target/test-classes"));
+
+ emailGatewayNode.start();
+
+ paymentNode =
+ SCANodeFactory.newInstance()
+ .createSCANode(null,
+ new SCAContribution("payment-bpel", "./target/classes"),
+ new SCAContribution("payment-bpel-test", "./target/test-classes"));
+
+ paymentNode.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("Fred", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ emailGatewayNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
new file mode 100644
index 0000000000..a38ba51ac5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..fcfc2d7c61
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment">
+ <import.java package="com.tuscanyscatours.payment" />
+ <deployable composite="pp:paymentClient" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/payment-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/payment-client.composite
new file mode 100644
index 0000000000..a5110aacff
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-bpel/src/test/resources/payment-client.composite
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:pp="http://www.tuscanyscatours.com/Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment"
+ name="paymentClient">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.impl.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8080/Payment" />
+ </reference>
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/build.xml
new file mode 100644
index 0000000000..3a86952fc1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/build.xml
@@ -0,0 +1,40 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-payment-groovy" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/pom.xml
new file mode 100644
index 0000000000..bd33f12b75
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/pom.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-groovy</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Groovy Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-script</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <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.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..1813c77436
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..a097d9b7e4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8082/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..36e2990be1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment" />
+ <deployable composite="tours:payment" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..2519d7642e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8083/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment.composite
new file mode 100644
index 0000000000..071c6786d1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment.composite
@@ -0,0 +1,38 @@
+<?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://tuscanyscatours.com/"
+ xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ name="payment">
+
+ <component name="Payment">
+ <t:implementation.script script="payment/PaymentImpl.groovy"/>
+ <service name="Payment">
+ <interface.java interface="com.tuscanyscatours.payment.Payment" />
+ <binding.ws uri="http://localhost:8081/Payment"/>
+ </service>
+ <reference name="emailGateway">
+ <interface.java interface="com.tuscanyscatours.emailgateway.EmailGateway" />
+ <binding.ws uri="http://localhost:8088/EmailGateway"/>
+ </reference>
+ <property name="transactionFee" type="xsd:float">0.02</property>
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment/PaymentImpl.groovy b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment/PaymentImpl.groovy
new file mode 100644
index 0000000000..854fbd2f4a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/main/resources/payment/PaymentImpl.groovy
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+def makePaymentMember(customerId, amount) {
+
+ def finalAmount = amount + transactionFee;
+
+ com.tuscanyscatours.emailgateway.EmailType email = new com.tuscanyscatours.emailgateway.EmailType();
+ email.setTo(customerId);
+ email.setTitle("Payment " + finalAmount + " Received");
+
+ emailGateway.sendEmail(email);
+
+ return "Success";
+} \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..907bcc93f8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+ private static SCANode emailGatewayNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ creditCardNode =
+ SCANodeFactory.newInstance()
+ .createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../creditcard-payment-jaxb/target/classes"));
+
+ creditCardNode.start();
+
+ emailGatewayNode =
+ SCANodeFactory.newInstance().createSCANode("emailgateway.composite",
+ new SCAContribution("emailgateway",
+ "../emailgateway/target/classes"),
+ new SCAContribution("emailgateway-test",
+ "../emailgateway/target/test-classes"));
+
+ emailGatewayNode.start();
+
+ paymentNode =
+ SCANodeFactory.newInstance().createSCANode(null,
+ new SCAContribution("payment-groovy", "./target/classes"),
+ new SCAContribution("payment-groovy-test",
+ "./target/test-classes"));
+
+ paymentNode.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("Fred", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ emailGatewayNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
new file mode 100644
index 0000000000..a38ba51ac5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..378e09009b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tours="http://tuscanyscatours.com/" >
+ <deployable composite="tours:paymentClient" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/payment-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/payment-client.composite
new file mode 100644
index 0000000000..353c1cea04
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-groovy/src/test/resources/payment-client.composite
@@ -0,0 +1,32 @@
+<?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://tuscanyscatours.com/"
+ name="paymentClient">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.impl.PaymentClientImpl" />
+ <reference name="payment">
+ <interface.java interface="com.tuscanyscatours.payment.Payment" />
+ <binding.ws uri="http://localhost:8081/Payment" />
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/build.xml
new file mode 100644
index 0000000000..4c943a7370
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-payment-java-policy" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/maven-eclipse.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/maven-eclipse.xml
new file mode 100644
index 0000000000..4ceebd71f7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/maven-eclipse.xml
@@ -0,0 +1,8 @@
+<project default="copy-resources">
+ <target name="init"/>
+ <target name="copy-resources" depends="init">
+ <copy todir="target/classes/META-INF" filtering="true">
+ <fileset dir="." includes="LICENSE|NOTICE"/>
+ </copy>
+ </target>
+</project> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/pom.xml
new file mode 100644
index 0000000000..e4d416fee2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/pom.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-java-policy</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Java Policy Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-policy-security</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+<!--
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-policy-transaction</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+-->
+
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>jsr250-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/Customer.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/Customer.java
new file mode 100644
index 0000000000..3b72f81b33
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/Customer.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer data
+ */
+public class Customer {
+ private String id;
+ private String email;
+ private String name;
+
+ private CreditCardDetailsType creditCard;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public CreditCardDetailsType getCreditCard() {
+ return creditCard;
+ }
+
+ public void setCreditCard(CreditCardDetailsType creditCard) {
+ this.creditCard = creditCard;
+ }
+
+ public String toString() {
+ return "id: " + id + " name: " + name + " e-mail: " + email;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
new file mode 100644
index 0000000000..b08f76e0fa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+public class CustomerNotFoundException extends Exception {
+ private static final long serialVersionUID = -129752837478357452L;
+
+ /**
+ *
+ */
+ public CustomerNotFoundException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public CustomerNotFoundException(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public CustomerNotFoundException(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public CustomerNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
new file mode 100644
index 0000000000..706167d567
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import java.util.Collection;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer registry interface
+ */
+public interface CustomerRegistry {
+ Customer createCustomer(String name, String email, CreditCardDetailsType creditCard);
+
+ boolean updateCustomer(Customer customer);
+
+ Customer getCustomer(String id) throws CustomerNotFoundException;
+
+ Collection<Customer> getAllCustomers();
+
+ boolean deleteCustomer(String id);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
new file mode 100644
index 0000000000..26926c7764
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.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 com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ * An in-memory customer registry implementation
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+@EagerInit
+@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;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java
new file mode 100644
index 0000000000..0fbf63d6bc
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.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);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..d9798e436a
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+
+@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;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
new file mode 100644
index 0000000000..b3eb95b44b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.impl;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Requires;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.payment.creditcard.AuthorizeFault_Exception;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+/**
+ * The payment implementation
+ */
+@Service(Payment.class)
+//@RolesAllowed({"Admin", "Billing"})
+//@RunAs("Billing")
+public class PaymentImpl implements Payment {
+
+ @Reference
+ protected CustomerRegistry customerRegistry;
+
+ @Reference
+ //@Authentication - not supported
+ @Requires("{http://www.osoa.org/xmlns/sca/1.0}authentication")
+ protected CreditCardPayment creditCardPayment;
+
+ @Reference
+ protected EmailGateway emailGateway;
+
+ @Property
+ protected float transactionFee = 0.01f;
+
+ public String makePaymentMember(String customerId, float amount) {
+ try {
+ Customer customer = customerRegistry.getCustomer(customerId);
+ String status = creditCardPayment.authorize(customer.getCreditCard(), amount + transactionFee);
+ emailGateway.sendEmail("order@tuscanyscatours.com",
+ customer.getEmail(),
+ "Status for your payment",
+ customer + " >>> Status = " + status);
+ return status;
+ } catch (CustomerNotFoundException ex) {
+ return "Payment failed due to " + ex.getMessage();
+ } catch (AuthorizeFault_Exception e) {
+ return e.getFaultInfo().getErrorCode();
+ } catch (Throwable t) {
+ return "Payment failed due to system error " + t.getMessage();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..9a87f1d2ae
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd: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
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..0fd7cb9910
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment" />
+ <deployable composite="scatours:payment" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..2519d7642e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8083/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/definitions.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..edaa250b10
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/definitions.xml
@@ -0,0 +1,48 @@
+<?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"/>
+ <intent name="managedTransaction" constrains="sca:implementation"/>
+ <intent name="managedTransaction.global"/>
+
+ <!-- Policy Sets -->
+ <policySet name="ps1"
+ provides="sca:authorization"
+ appliesTo="sca:implementation.java"/>
+
+ <policySet name="ps2"
+ provides="sca:managedTransaction.global"
+ appliesTo="sca:implementation.java"/>
+
+ <policySet name="BasicAuthenticationPolicySet"
+ provides="authentication"
+ appliesTo="sca:binding.ws">
+ <tuscany:basicAuthentication>
+ <tuscany:userName>myname</tuscany:userName>
+ <tuscany:password>mypassword</tuscany:password>
+ </tuscany:basicAuthentication>
+ </policySet>
+
+</definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/payment.composite
new file mode 100644
index 0000000000..710583ae5d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/main/resources/payment.composite
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" />
+ <service name="Payment">
+ <binding.sca/>
+ <binding.ws uri="http://localhost:8081/Payment"/>
+ </service>
+ <reference name="customerRegistry" target="CustomerRegistry"/>
+ <!-- reference name="creditCardPayment" policySets="BasicAuthenticationPolicySet"-->
+ <!-- reference name="creditCardPayment" requires="authentication"-->
+ <reference name="creditCardPayment">
+ <binding.ws uri="http://localhost:8082/CreditCardPayment"/>
+ </reference>
+ <reference name="emailGateway" target="EmailGateway"/>
+ <property name="transactionFee">0.02</property>
+ </component>
+
+ <component name="CustomerRegistry">
+ <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
+ </component>
+
+ <component name="EmailGateway">
+ <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..d8c79622e6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java-policy/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+public class PaymentTestCase {
+ private static SCANode node1;
+ private static SCANode node2;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ node1 =
+ SCANodeFactory.newInstance()
+ .createSCANode("payment.composite",
+ new SCAContribution("payment", "./target/classes"));
+ node2 =
+ SCANodeFactory.newInstance()
+ .createSCANode("creditcard.composite",
+ new SCAContribution("creditcard",
+ "../../contributions/creditcard-payment-jaxb/target/classes"));
+ node1.start();
+ node2.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)node1;
+ Payment payment = client.getService(Payment.class, "Payment");
+
+ System.out.println("\n\nSuccessful Payment - Status = \n\n" + payment.makePaymentMember("c-0", 100.00f));
+ System.out.println("\n\nFailed Payment - Status = \n\n" + 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");
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node1 != null) {
+ node1.stop();
+ node1 = null;
+ }
+
+ if (node2 != null) {
+ node2.stop();
+ node2 = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/build.xml
new file mode 100644
index 0000000000..4ddd9fbba0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-payment-java" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/pom.xml
new file mode 100644
index 0000000000..a8a873e132
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/pom.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-java</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Java Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-policy-security</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>jsr250-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/Customer.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/Customer.java
new file mode 100644
index 0000000000..c97ba8fb9f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/Customer.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer data
+ */
+public class Customer {
+ private String id;
+ private String email;
+ private String name;
+
+ private CreditCardDetailsType creditCard;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public CreditCardDetailsType getCreditCard() {
+ return creditCard;
+ }
+
+ public void setCreditCard(CreditCardDetailsType creditCard) {
+ this.creditCard = creditCard;
+ }
+
+ public String toString() {
+ return "id: " + id + " name: " + name + " e-mail: " + email;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
new file mode 100644
index 0000000000..7f028c301e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+public class CustomerNotFoundException extends Exception {
+ private static final long serialVersionUID = -129752837478357452L;
+
+ /**
+ *
+ */
+ public CustomerNotFoundException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public CustomerNotFoundException(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public CustomerNotFoundException(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public CustomerNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
new file mode 100644
index 0000000000..38a2759660
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import java.util.Collection;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer registry interface
+ */
+public interface CustomerRegistry {
+ Customer createCustomer(String name, String email, CreditCardDetailsType creditCard);
+
+ boolean updateCustomer(Customer customer);
+
+ Customer getCustomer(String id) throws CustomerNotFoundException;
+
+ Collection<Customer> getAllCustomers();
+
+ boolean deleteCustomer(String id);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
new file mode 100644
index 0000000000..bc76f411f3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.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 com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ * An in-memory customer registry implementation
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+@EagerInit
+@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;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java
new file mode 100644
index 0000000000..8c6ca806d2
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.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);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..a6a162d5c3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+
+@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;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
new file mode 100644
index 0000000000..988605f7cd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.impl;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.payment.creditcard.AuthorizeFault_Exception;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+/**
+ * The payment implementation
+ */
+@Service(Payment.class)
+public class PaymentImpl implements Payment {
+
+ @Reference
+ protected CustomerRegistry customerRegistry;
+
+ @Reference
+ protected CreditCardPayment creditCardPayment;
+
+ @Reference
+ protected EmailGateway emailGateway;
+
+ @Property
+ protected float transactionFee = 0.01f;
+
+ public String makePaymentMember(String customerId, float amount) {
+ try {
+ Customer customer = customerRegistry.getCustomer(customerId);
+ String status = creditCardPayment.authorize(customer.getCreditCard(), amount + transactionFee);
+ emailGateway.sendEmail("order@tuscanyscatours.com",
+ customer.getEmail(),
+ "Status for your payment",
+ customer + " >>> Status = " + status);
+ return status;
+ } catch (CustomerNotFoundException ex) {
+ return "Payment failed due to " + ex.getMessage();
+ } catch (AuthorizeFault_Exception e) {
+ return e.getFaultInfo().getErrorCode();
+ } catch (Throwable t) {
+ return "Payment failed due to system error " + t.getMessage();
+ }
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..d17497d1f6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd: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
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..f8ff7b4623
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment" />
+ <deployable composite="scatours:payment" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..3885764899
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8083/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/definitions.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..dc47395e9b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/definitions.xml
@@ -0,0 +1,34 @@
+<?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">
+
+ <!-- Policy Intents Defined by the SCA Runtime -->
+ <intent name="authorization" constrains="sca:implementation"/>
+ <intent name="managedTransaction" constrains="sca:implementation"/>
+ <intent name="managedTransaction.global"/>
+
+ <!-- Policy intents -->
+ <policySet name="ps1" provides="sca:authorization" appliesTo="sca:implementation.java"/>
+
+ <policySet name="ps2" provides="sca:managedTransaction.global" appliesTo="sca:implementation.java"/>
+
+</definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/payment.composite
new file mode 100644
index 0000000000..b4dcd328b1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/main/resources/payment.composite
@@ -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://tuscanyscatours.com/"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.java class="com.tuscanyscatours.payment.impl.PaymentImpl" />
+ <service name="Payment">
+ <binding.ws uri="http://localhost:8081/Payment" />
+ <binding.sca />
+ </service>
+ <reference name="customerRegistry" target="CustomerRegistry" />
+ <reference name="creditCardPayment">
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" />
+ </reference>
+ <reference name="emailGateway" target="EmailGateway" />
+ <property name="transactionFee">0.02</property>
+ </component>
+
+ <component name="CustomerRegistry">
+ <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
+ </component>
+
+ <component name="EmailGateway">
+ <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
+ </component>
+
+</composite> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..ead8b87db0
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-java/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+public class PaymentTestCase {
+ private static SCANode node;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ node =
+ SCANodeFactory.newInstance()
+ .createSCANode(null,
+ new SCAContribution("payment", "./target/classes"),
+ new SCAContribution("creditcard",
+ "../../contributions/creditcard-payment-jaxb/target/classes"));
+ node.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)node;
+ Payment payment = client.getService(Payment.class, "Payment");
+
+ System.out.println("\n\nSuccessful Payment - Status = \n\n" + payment.makePaymentMember("c-0", 100.00f));
+ System.out.println("\n\nFailed Payment - Status = \n\n" + 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");
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (node != null) {
+ node.stop();
+ node = null;
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/build.xml
new file mode 100644
index 0000000000..db0e41b22f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/build.xml
@@ -0,0 +1,40 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-payment-spring-policy" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/pom.xml
new file mode 100644
index 0000000000..ff241a81b8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/pom.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-spring-policy</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Spring Policy Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!--
+ https://issues.apache.org/jira/browse/TUSCANY-3069
+ -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>scatours.emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java
new file mode 100644
index 0000000000..3b72f81b33
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/Customer.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer data
+ */
+public class Customer {
+ private String id;
+ private String email;
+ private String name;
+
+ private CreditCardDetailsType creditCard;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public CreditCardDetailsType getCreditCard() {
+ return creditCard;
+ }
+
+ public void setCreditCard(CreditCardDetailsType creditCard) {
+ this.creditCard = creditCard;
+ }
+
+ public String toString() {
+ return "id: " + id + " name: " + name + " e-mail: " + email;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
new file mode 100644
index 0000000000..b08f76e0fa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+public class CustomerNotFoundException extends Exception {
+ private static final long serialVersionUID = -129752837478357452L;
+
+ /**
+ *
+ */
+ public CustomerNotFoundException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public CustomerNotFoundException(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public CustomerNotFoundException(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public CustomerNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
new file mode 100644
index 0000000000..706167d567
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import java.util.Collection;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer registry interface
+ */
+public interface CustomerRegistry {
+ Customer createCustomer(String name, String email, CreditCardDetailsType creditCard);
+
+ boolean updateCustomer(Customer customer);
+
+ Customer getCustomer(String id) throws CustomerNotFoundException;
+
+ Collection<Customer> getAllCustomers();
+
+ boolean deleteCustomer(String id);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
new file mode 100644
index 0000000000..4381029543
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ * An in-memory customer registry implementation
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+@EagerInit
+public class CustomerRegistryImpl implements CustomerRegistry {
+ private volatile static int idGenerator = 0;
+ private Map<String, Customer> customers = new HashMap<String, Customer>();
+
+ @Init
+ public void init() {
+ // Load the customers
+ ObjectFactory factory = new ObjectFactory();
+ CreditCardDetailsType cc = factory.createCreditCardDetailsType();
+ PayerType john = factory.createPayerType();
+ john.setName("John Smith");
+ cc.setCardOwner(john);
+ cc.setCreditCardNumber("1111-2222-3333-4444");
+ cc.setCreditCardType(CreditCardTypeType.VISA);
+ cc.setCVV2("1234");
+ cc.setExpMonth(1);
+ cc.setExpYear(2012);
+ createCustomer("John Smith", "john@xyz.com", cc);
+ }
+
+ @Destroy
+ public void destroy() {
+ // Save the customers
+ }
+
+ public Customer createCustomer(String name, String email, CreditCardDetailsType creditCard) {
+ Customer customer = new Customer();
+ customer.setId("c-" + idGenerator++);
+ customer.setName(name);
+ customer.setEmail(email);
+ customer.setCreditCard(creditCard);
+ customers.put(customer.getId(), customer);
+ return customer;
+ }
+
+ public boolean deleteCustomer(String id) {
+ return customers.remove(id) != null;
+ }
+
+ public Collection<Customer> getAllCustomers() {
+ return customers.values();
+ }
+
+ public Customer getCustomer(String id) throws CustomerNotFoundException {
+ Customer customer = customers.get(id);
+
+ if (customer == null) {
+ throw new CustomerNotFoundException("Customer " + id + " not found");
+ }
+
+ return customer;
+ }
+
+ public boolean updateCustomer(Customer customer) {
+ Customer current = null;
+ try {
+ current = getCustomer(customer.getId());
+ } catch (Exception ex) {
+ return false;
+ }
+
+ current.setEmail(customer.getEmail());
+ current.setName(customer.getName());
+ current.setCreditCard(customer.getCreditCard());
+ return true;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..5eb825cb85
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
new file mode 100644
index 0000000000..a35f761dc7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.impl;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+public class PaymentImpl implements Payment {
+
+ private CreditCardPayment creditCardPayment;
+ private CustomerRegistry customerRegistry;
+ private EmailGateway emailGateway;
+ private float transactionFee;
+
+ public void setCreditCardPayment(CreditCardPayment creditCardPayment) {
+ this.creditCardPayment = creditCardPayment;
+ }
+
+ public void setCustomerRegistry(CustomerRegistry customerRegistry) {
+ this.customerRegistry = customerRegistry;
+ }
+
+ public void setEmailGateway(EmailGateway emailGateway) {
+ this.emailGateway = emailGateway;
+ }
+
+ public void setTransactionFee(Float transactionFee) {
+ this.transactionFee = transactionFee;
+ }
+
+ public String makePaymentMember(String customerId, float amount) {
+ try {
+ Customer customer = customerRegistry.getCustomer(customerId);
+
+ amount += transactionFee;
+
+ String status = creditCardPayment.authorize(customer.getCreditCard(), amount);
+
+ com.tuscanyscatours.emailgateway.ObjectFactory emailFactory =
+ new com.tuscanyscatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ } catch (CustomerNotFoundException ex) {
+ return "Payment failed due to " + ex.getMessage();
+ } catch (Throwable t) {
+ return "Payment failed due to system error " + t.getMessage();
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..8224cd126f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..9e9a6ea685
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8088/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..696bf293f3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment"/>
+ <deployable composite="scatours:payment" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml
new file mode 100644
index 0000000000..bcb965924b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment-context.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="Payment" class="com.tuscanyscatours.payment.impl.PaymentImpl">
+ <property name="creditCardPayment" ref="creditCardPaymentReference"/>
+ <property name="emailGateway" ref="emailGateway"/>
+ <property name="customerRegistry" ref="customerRegistry"/>
+ <property name="transactionFee" value="0.5f"/>
+ </bean>
+
+</beans>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..0e421d3b83
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/definitions.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<definitions xmlns="http://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 Sets -->
+ <policySet name="BasicAuthenticationPolicySet"
+ provides="authentication"
+ appliesTo="sca:binding.ws">
+ <tuscany:basicAuthentication>
+ <tuscany:userName>myname</tuscany:userName>
+ <tuscany:password>mypassword</tuscany:password>
+ </tuscany:basicAuthentication>
+ </policySet>
+
+</definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite
new file mode 100644
index 0000000000..3f5bcfe48d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/main/resources/payment.composite
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <binding.ws uri="http://localhost:8081/Payment"/>
+ </service>
+ <reference name="creditCardPaymentReference" >
+ <binding.ws uri="http://localhost:8082/CreditCardPayment" requires="authentication"/>
+ </reference>
+ <reference name="emailGateway" target="EmailGateway"/>
+ <reference name="customerRegistry" target="CustomerRegistry"/>
+ <property name="transactionFee">1.23</property>
+ </component>
+
+ <component name="CustomerRegistry">
+ <implementation.java class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl" />
+ </component>
+
+ <component name="EmailGateway">
+ <implementation.java class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl" />
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..0bff419ccd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ creditCardNode =
+ SCANodeFactory.newInstance()
+ .createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../creditcard-payment-jaxb-policy/target/classes"));
+
+ creditCardNode.start();
+
+ paymentNode =
+ SCANodeFactory.newInstance()
+ .createSCANode(null,
+ new SCAContribution("payment-spring-policy", "./target/classes"),
+ new SCAContribution("payment-spring-policy-test", "./target/test-classes"));
+
+ paymentNode.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("c-0", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
new file mode 100644
index 0000000000..4f64b20c4e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..c97b6862f4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <import.java package="com.tuscanyscatours.payment"/>
+ <deployable composite="scatours:paymentClient" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite
new file mode 100644
index 0000000000..642cebfd1c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-policy/src/test/resources/payment-client.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="paymentClient">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.impl.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8081/Payment" />
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/build.xml
new file mode 100644
index 0000000000..6ad2ea55ad
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/build.xml
@@ -0,0 +1,40 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-payment-spring-scatag" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/pom.xml
new file mode 100644
index 0000000000..d5cd4905a1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/pom.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-spring-scatag</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Spring SCA Tag Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!--
+ https://issues.apache.org/jira/browse/TUSCANY-3069
+ -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>scatours.emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..5eb825cb85
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
new file mode 100644
index 0000000000..42d995aa88
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.impl;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+//@Service(Payment.class)
+public class PaymentImpl implements Payment {
+
+ protected CreditCardPayment creditCardPayment;
+ protected EmailGateway emailGateway;
+ protected float transactionFee = 0;
+
+ //@Reference
+ public void setCreditCardPayment(CreditCardPayment creditCardPayment) {
+ this.creditCardPayment = creditCardPayment;
+ }
+
+ public void setEmailGateway(EmailGateway emailGateway) {
+ this.emailGateway = emailGateway;
+ }
+
+ //@Property
+ public void setTransactionFee(Float transactionFee) {
+ this.transactionFee = transactionFee;
+ }
+
+ public String makePaymentMember(String customerId, float amount) {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
+ ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa"));
+ PayerType ccOwner = objectFactory.createPayerType();
+ ccOwner.setName(customerId);
+ ccDetails.setCardOwner(ccOwner);
+
+ amount += transactionFee;
+
+ String status = creditCardPayment.authorize(ccDetails, amount);
+
+ com.tuscanyscatours.emailgateway.ObjectFactory emailFactory =
+ new com.tuscanyscatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..8224cd126f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..44867f794c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8088/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b480cc4aa1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment"/>
+ <deployable composite="scatours:payment" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment-context.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment-context.xml
new file mode 100644
index 0000000000..83776cde1b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment-context.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+
+ <sca:service name="Payment"
+ type="com.tuscanyscatours.payment.Payment"
+ target="Payment"/>
+
+ <bean id="Payment" class="com.tuscanyscatours.payment.impl.PaymentImpl">
+ <property name="creditCardPayment" ref="creditCardPayment"/>
+ <property name="emailGateway" ref="EmailGateway"/>
+ <property name="transactionFee" ref="transactionFee"/>
+ </bean>
+
+ <bean id="EmailGateway" class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl">
+ </bean>
+
+ <sca:reference name="creditCardPayment"
+ type="com.tuscanyscatours.payment.creditcard.CreditCardPayment"/>
+
+ <sca:property name="transactionFee"
+ type="java.lang.Float"/>
+</beans>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/payment.composite
new file mode 100644
index 0000000000..639f1e5662
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/main/resources/payment.composite
@@ -0,0 +1,35 @@
+<?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://tuscanyscatours.com/"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <binding.ws uri="http://localhost:8081/Payment"/>
+ </service>
+ <reference name="creditCardPayment">
+ <binding.ws uri="http://localhost:8082/CreditCardPayment"/>
+ </reference>
+ <property name="transactionFee">1.23</property>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..29fda50ef3
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ creditCardNode =
+ SCANodeFactory.newInstance()
+ .createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../creditcard-payment-jaxb/target/classes"));
+
+ creditCardNode.start();
+
+ paymentNode =
+ SCANodeFactory.newInstance().createSCANode(null,
+ new SCAContribution("payment-spring-annotation",
+ "./target/classes"),
+ new SCAContribution("payment-spring-annotation-test",
+ "./target/test-classes"));
+
+ paymentNode.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("Fred", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
new file mode 100644
index 0000000000..4f64b20c4e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b5639eb1f9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <import.java package="com.tuscanyscatours.payment"/>
+ <deployable composite="scatours:paymentClient" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/payment-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/payment-client.composite
new file mode 100644
index 0000000000..642cebfd1c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring-scatag/src/test/resources/payment-client.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="paymentClient">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.impl.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8081/Payment" />
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/build.xml
new file mode 100644
index 0000000000..93c9dfc660
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/build.xml
@@ -0,0 +1,40 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-payment-spring" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="CreditCardPayment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/creditcard/CreditCardPayment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment.creditcard"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="EmailGateway.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/emailgateway/EmailGateway.class"/>
+ <param name="package" value="com.tuscanyscatours.emailgateway"/>
+ </antcall>
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/pom.xml
new file mode 100644
index 0000000000..9be05ec4de
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/pom.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-payment-spring</artifactId>
+ <name>Apache Tuscany SCA Tours Payment Spring Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-axis2</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-jetty</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!--
+ https://issues.apache.org/jira/browse/TUSCANY-3069
+ -->
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-spring-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/payment.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>payment.creditcard</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment.creditcard</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>CreditCardPayment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/creditcard.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>scatours.emailgateway</id>
+ <phase>process-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.emailgateway</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>EmailGateway.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <staleFile>${project.build.directory}/jaxws-source/stale/emailgateway.stale</staleFile>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/Customer.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/Customer.java
new file mode 100644
index 0000000000..3b72f81b33
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/Customer.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer data
+ */
+public class Customer {
+ private String id;
+ private String email;
+ private String name;
+
+ private CreditCardDetailsType creditCard;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public CreditCardDetailsType getCreditCard() {
+ return creditCard;
+ }
+
+ public void setCreditCard(CreditCardDetailsType creditCard) {
+ this.creditCard = creditCard;
+ }
+
+ public String toString() {
+ return "id: " + id + " name: " + name + " e-mail: " + email;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
new file mode 100644
index 0000000000..b08f76e0fa
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+public class CustomerNotFoundException extends Exception {
+ private static final long serialVersionUID = -129752837478357452L;
+
+ /**
+ *
+ */
+ public CustomerNotFoundException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public CustomerNotFoundException(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public CustomerNotFoundException(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public CustomerNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
new file mode 100644
index 0000000000..706167d567
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer;
+
+import java.util.Collection;
+
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+
+/**
+ * Customer registry interface
+ */
+public interface CustomerRegistry {
+ Customer createCustomer(String name, String email, CreditCardDetailsType creditCard);
+
+ boolean updateCustomer(Customer customer);
+
+ Customer getCustomer(String id) throws CustomerNotFoundException;
+
+ Collection<Customer> getAllCustomers();
+
+ boolean deleteCustomer(String id);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
new file mode 100644
index 0000000000..26926c7764
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.customer.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.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 com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
+import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
+import com.tuscanyscatours.payment.creditcard.ObjectFactory;
+import com.tuscanyscatours.payment.creditcard.PayerType;
+
+/**
+ * An in-memory customer registry implementation
+ */
+@Service(CustomerRegistry.class)
+@Scope("COMPOSITE")
+@EagerInit
+@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;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
new file mode 100644
index 0000000000..5eb825cb85
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.emailgateway.impl;
+
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+
+public class EmailGatewayImpl implements EmailGateway {
+
+ public String sendEmail(EmailType email) {
+ System.out.println("Sending mail to " + email.getTo());
+ return "SENT";
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
new file mode 100644
index 0000000000..a35f761dc7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.payment.impl;
+
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
+import com.tuscanyscatours.emailgateway.EmailGateway;
+import com.tuscanyscatours.emailgateway.EmailType;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
+
+public class PaymentImpl implements Payment {
+
+ private CreditCardPayment creditCardPayment;
+ private CustomerRegistry customerRegistry;
+ private EmailGateway emailGateway;
+ private float transactionFee;
+
+ public void setCreditCardPayment(CreditCardPayment creditCardPayment) {
+ this.creditCardPayment = creditCardPayment;
+ }
+
+ public void setCustomerRegistry(CustomerRegistry customerRegistry) {
+ this.customerRegistry = customerRegistry;
+ }
+
+ public void setEmailGateway(EmailGateway emailGateway) {
+ this.emailGateway = emailGateway;
+ }
+
+ public void setTransactionFee(Float transactionFee) {
+ this.transactionFee = transactionFee;
+ }
+
+ public String makePaymentMember(String customerId, float amount) {
+ try {
+ Customer customer = customerRegistry.getCustomer(customerId);
+
+ amount += transactionFee;
+
+ String status = creditCardPayment.authorize(customer.getCreditCard(), amount);
+
+ com.tuscanyscatours.emailgateway.ObjectFactory emailFactory =
+ new com.tuscanyscatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ } catch (CustomerNotFoundException ex) {
+ return "Payment failed due to " + ex.getMessage();
+ } catch (Throwable t) {
+ return "Payment failed due to system error " + t.getMessage();
+ }
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/CreditCardPayment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/CreditCardPayment.wsdl
new file mode 100644
index 0000000000..8224cd126f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/CreditCardPayment.wsdl
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/CreditCardPayment/"
+ xmlns:tns="http://www.tuscanyscatours.com/CreditCardPayment/">
+
+ <xsd:element name="authorize">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="authorizeResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/EmailGateway.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/EmailGateway.wsdl
new file mode 100644
index 0000000000..44867f794c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/EmailGateway.wsdl
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/EmailGateway/"
+ xmlns:tns="http://www.tuscanyscatours.com/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8088/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b480cc4aa1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <export.java package="com.tuscanyscatours.payment"/>
+ <deployable composite="scatours:payment" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment-context.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment-context.xml
new file mode 100644
index 0000000000..f27280bf2f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment-context.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="Payment" class="com.tuscanyscatours.payment.impl.PaymentImpl">
+ <property name="creditCardPayment" ref="creditCardPaymentReference"/>
+ <property name="emailGateway" ref="EmailGateway"/>
+ <property name="customerRegistry" ref="CustomerRegistry"/>
+ <property name="transactionFee" value="0.5f"/>
+ </bean>
+
+ <bean id="CustomerRegistry" class="com.tuscanyscatours.customer.impl.CustomerRegistryImpl">
+ </bean>
+
+ <bean id="EmailGateway" class="com.tuscanyscatours.emailgateway.impl.EmailGatewayImpl">
+ </bean>
+
+</beans>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..e2c4062f2e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8080/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/payment.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/payment.composite
new file mode 100644
index 0000000000..1e5bae2a2b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/main/resources/payment.composite
@@ -0,0 +1,35 @@
+<?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://tuscanyscatours.com/"
+ name="payment">
+
+ <component name="Payment">
+ <implementation.spring location="Payment-context.xml"/>
+ <service name="Payment">
+ <binding.ws uri="http://localhost:8081/Payment"/>
+ </service>
+ <reference name="creditCardPaymentReference">
+ <binding.ws uri="http://localhost:8082/CreditCardPayment"/>
+ </reference>
+ <property name="transactionFee">1.23</property>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/PaymentTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/PaymentTestCase.java
new file mode 100644
index 0000000000..8723c05624
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/PaymentTestCase.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.payment.Payment;
+
+/**
+ *
+ */
+public class PaymentTestCase {
+ private static SCANode paymentNode;
+ private static SCANode creditCardNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ creditCardNode =
+ SCANodeFactory.newInstance()
+ .createSCANode("creditcard.composite",
+ new SCAContribution("creditcard", "../creditcard-payment-jaxb/target/classes"));
+
+ creditCardNode.start();
+
+ paymentNode =
+ SCANodeFactory.newInstance().createSCANode(null,
+ new SCAContribution("payment-spring", "./target/classes"),
+ new SCAContribution("payment-spring-test",
+ "./target/test-classes"));
+
+ paymentNode.start();
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)paymentNode;
+ Payment payment = client.getService(Payment.class, "PaymentClient");
+ System.out.println("Result = " + payment.makePaymentMember("c-0", 100.00f));
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ paymentNode.stop();
+ creditCardNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
new file mode 100644
index 0000000000..4f64b20c4e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/java/scatours/payment/client/impl/PaymentClientImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package scatours.payment.client.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Payment.class)
+public class PaymentClientImpl implements Payment {
+ @Reference
+ protected Payment payment;
+
+ public String makePaymentMember(String customerId, float amount) {
+ // Delegate the external web service
+ return payment.makePaymentMember(customerId, amount);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b5639eb1f9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:scatours="http://tuscanyscatours.com/">
+ <import.java package="com.tuscanyscatours.payment"/>
+ <deployable composite="scatours:paymentClient" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/payment-client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/payment-client.composite
new file mode 100644
index 0000000000..642cebfd1c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/payment-spring/src/test/resources/payment-client.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://tuscanyscatours.com/"
+ name="paymentClient">
+
+ <component name="PaymentClient">
+ <implementation.java class="scatours.payment.client.impl.PaymentClientImpl" />
+ <reference name="payment">
+ <binding.ws uri="http://localhost:8081/Payment" />
+ </reference>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/build.xml
new file mode 100644
index 0000000000..a621364d9d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-policy-client" default="compile">
+ <import file="../../antdefs.xml"/>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/maven-eclipse.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/maven-eclipse.xml
new file mode 100644
index 0000000000..4ceebd71f7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/maven-eclipse.xml
@@ -0,0 +1,8 @@
+<project default="copy-resources">
+ <target name="init"/>
+ <target name="copy-resources" depends="init">
+ <copy todir="target/classes/META-INF" filtering="true">
+ <fileset dir="." includes="LICENSE|NOTICE"/>
+ </copy>
+ </target>
+</project> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/pom.xml
new file mode 100644
index 0000000000..9b16c9ea09
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/pom.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-policy-client</artifactId>
+ <name>Apache Tuscany SCA Tours Policy Client Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </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.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/java/scatours/client/TestClient.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/java/scatours/client/TestClient.java
new file mode 100644
index 0000000000..b1858782cf
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/java/scatours/client/TestClient.java
@@ -0,0 +1,38 @@
+/*
+ * 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.client;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.payment.Payment;
+
+@Service(Runnable.class)
+public class TestClient {
+ @Reference
+ protected Payment payment;
+
+ public TestClient() {
+ }
+
+ public void run() {
+ System.out.println("TestClient - Successful Payment - Status = " + payment.makePaymentMember("c-0", 100.00f));
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..3ccb9da245
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:client="http://client.scatours/">
+ <import.java package="payment" />
+ <deployable composite="client:Client" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..2519d7642e
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8083/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/client.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/client.composite
new file mode 100644
index 0000000000..788dd81a92
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/policy-client/src/main/resources/client.composite
@@ -0,0 +1,28 @@
+<?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://client.scatours/"
+ name="Client">
+
+ <component name="TestClient">
+ <implementation.java class="scatours.client.TestClient" />
+ <reference name="payment" target="Payment/Payment" />
+ </component>
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/pom.xml
new file mode 100644
index 0000000000..33a68c2550
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <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>blog-feed</module>
+ <module>buildingblocks</module>
+ <module>buildingblocks-client</module>
+ <module>calendar</module>
+ <module>car</module>
+ <module>common</module>
+ <module>creditcard-payment-jaxb</module>
+ <module>creditcard-payment-jaxb-policy</module>
+ <module>creditcard-payment-sdo</module>
+ <module>creditcard-payment-webapp</module>
+ <module>currency</module>
+ <module>currency-corba</module>
+ <module>currency-jms</module>
+ <module>currency-jsp</module>
+ <module>currency-rmi</module>
+ <module>currency-servlet</module>
+ <module>currency-ws</module>
+ <module>databinding-client</module>
+ <module>emailgateway</module>
+ <module>feed-logger</module>
+ <module>flight</module>
+ <module>fullapp-ui</module>
+ <module>fullapp-coordination</module>
+ <module>fullapp-currency</module>
+ <module>fullapp-packagedtrip</module>
+ <module>fullapp-bespoketrip</module>
+ <module>fullapp-shoppingcart</module>
+ <module>help-pages</module>
+ <module>hotel</module>
+ <module>interaction-client</module>
+ <module>interaction-service-remote</module>
+ <module>introducing-client</module>
+ <module>introducing-tours</module>
+ <module>introducing-trips</module>
+ <module>notification</module>
+ <module>notification-ws</module>
+ <module>notification-corba</module>
+ <module>notification-ejb</module>
+ <module>notification-jms</module>
+ <module>notification-rmi</module>
+ <module>shoppingcart</module>
+ <module>travelcatalog</module>
+ <module>tripbooking</module>
+ <module>trip</module>
+ <module>scatours</module>
+ <module>payment-java</module>
+ <module>payment-java-policy</module>
+ <module>payment-spring</module>
+ <module>payment-spring-policy</module>
+ <module>payment-spring-scatag</module>
+ <module>payment-bpel</module>
+ <module>payment-groovy</module>
+ <module>policy-client</module>
+ </modules>
+ </profile>
+
+ </profiles>
+
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/build.xml
new file mode 100644
index 0000000000..bdb8f8ecc4
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/build.xml
@@ -0,0 +1,28 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-scatours" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ <pathelement path="../shoppingcart/target/scatours-contribution-shoppingcart.jar"/>
+ <pathelement path="../travelcatalog/target/scatours-contribution-travelcatalog.jar"/>
+ <pathelement path="../tripbooking/target/scatours-contribution-tripbooking.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/pom.xml
new file mode 100644
index 0000000000..436be14602
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-scatours</artifactId>
+ <name>Apache Tuscany SCA Tours SCATours Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-travelcatalog</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-tripbooking</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-shoppingcart</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursBooking.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursBooking.java
new file mode 100644
index 0000000000..a1e0d6c91f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursBooking.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+
+/**
+ * The SCA Tours trip booking service interface
+ */
+@Remotable
+public interface SCAToursBooking {
+ String bookTrip(String cartId, TripItem tripId);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursCart.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursCart.java
new file mode 100644
index 0000000000..f9554342e9
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursCart.java
@@ -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 com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+
+/**
+ * The ShoppingCart service interface
+ */
+@Remotable
+public interface SCAToursCart {
+ String newCart();
+
+ TripItem[] getTrips(String cartId);
+
+ void checkout(String cartId);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursSearch.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursSearch.java
new file mode 100644
index 0000000000..6ce03fbb86
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/SCAToursSearch.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+/**
+ * The Search service interface
+ */
+@Remotable
+public interface SCAToursSearch {
+ TripItem[] search(TripLeg tripLeg);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/impl/SCAToursImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/impl/SCAToursImpl.java
new file mode 100644
index 0000000000..7a7f6b460d
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/java/com/tuscanyscatours/impl/SCAToursImpl.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.impl;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.SCAToursBooking;
+import com.tuscanyscatours.SCAToursCart;
+import com.tuscanyscatours.SCAToursSearch;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+import com.tuscanyscatours.shoppingcart.CartCheckout;
+import com.tuscanyscatours.shoppingcart.CartInitialize;
+import com.tuscanyscatours.travelcatalog.TravelCatalogSearch;
+import com.tuscanyscatours.tripbooking.TripBooking;
+
+/**
+ * An implementation of the SCA tours component. it's just a pass through and allows
+ * the outward facing bindings to be changed without changing the individual contributions
+ */
+@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 CartInitialize cartInitialize;
+
+ @Reference
+ protected CartCheckout cartCheckout;
+
+ // 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);
+ return bookedTrip.getBookingCode();
+ }
+
+ // SCAToursCart methods
+
+ public String newCart() {
+ String cartId = cartInitialize.newCart();
+ return cartId;
+ }
+
+ public TripItem[] getTrips(String cartId) {
+ return cartInitialize.getTrips(cartId);
+ }
+
+ public void checkout(String cartId) {
+ // need to get the user id from the context here but
+ // just make one up for the time being
+ cartCheckout.checkout(cartId, "c-0");
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..2728a88840
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/scatours/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+<?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="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.travelcatalog" />
+ <import.java package="com.tuscanyscatours.tripbooking" />
+ <import.java package="com.tuscanyscatours.shoppingcart" />
+ <export.java package="com.tuscanyscatours" />
+ <export.java package="com.tuscanyscatours.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/build.xml
new file mode 100644
index 0000000000..1976d2b5ed
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/build.xml
@@ -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.
+-->
+
+<project name="scatours-contribution-shoppingcart" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ </path>
+
+ <target name="wsdljava">
+ <antcall target="wsimport">
+ <param name="wsdlfile" value="Payment.wsdl"/>
+ <param name="javaclass" value="com/tuscanyscatours/payment/Payment.class"/>
+ <param name="package" value="com.tuscanyscatours.payment"/>
+ </antcall>
+ </target>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/pom.xml
new file mode 100644
index 0000000000..f5e64b9dfd
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/pom.xml
@@ -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>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-shoppingcart</artifactId>
+ <name>Apache Tuscany SCA Tours Shopping Cart Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>java.net2</id>
+ <name>java.net Maven 2.x Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/jaxws-source</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <id>payment</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <packageName>com.tuscanyscatours.payment</packageName>
+ <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>Payment.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+ <verbose>false</verbose>
+ <xnocompile>true</xnocompile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartCheckout.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartCheckout.java
new file mode 100644
index 0000000000..929f9895c6
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartCheckout.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.shoppingcart;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CartCheckout {
+ void checkout(String cartId, String name);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartInitialize.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartInitialize.java
new file mode 100644
index 0000000000..24affc4b23
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartInitialize.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.shoppingcart;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+
+@Remotable
+public interface CartInitialize {
+ String newCart();
+
+ TripItem[] getTrips(String cartId);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartStore.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartStore.java
new file mode 100644
index 0000000000..c7d03d765b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartStore.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.shoppingcart;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+
+/**
+ * The CartStore service interface
+ */
+@Remotable
+@Conversational
+public interface CartStore {
+ void addTrip(TripItem trip);
+
+ void removeTrip(TripItem trip);
+
+ TripItem[] getTrips();
+
+ @EndsConversation
+ void reset();
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartUpdates.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartUpdates.java
new file mode 100644
index 0000000000..f9a1272695
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/CartUpdates.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.shoppingcart;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+
+@Remotable
+public interface CartUpdates {
+ void addTrip(String cartId, TripItem trip);
+
+ void removeTrip(String cartId, TripItem trip);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/CartStoreImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/CartStoreImpl.java
new file mode 100644
index 0000000000..460b962526
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/CartStoreImpl.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.shoppingcart.impl;
+
+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.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.shoppingcart.CartStore;
+
+/**
+ * An implementation of the CartStore service
+ */
+@Scope("CONVERSATION")
+@Service(interfaces = {CartStore.class})
+public class CartStoreImpl implements CartStore {
+
+ @ConversationID
+ protected String cartId;
+
+ private List<TripItem> trips = new ArrayList<TripItem>();
+
+ @Init
+ public void initCart() {
+ System.out.println("CartStore init for id: " + cartId);
+ }
+
+ @Destroy
+ public void destroyCart() {
+ System.out.println("CartStore 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 reset() {
+ trips.clear();
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/ShoppingCartImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/ShoppingCartImpl.java
new file mode 100644
index 0000000000..41c58e5266
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/java/com/tuscanyscatours/shoppingcart/impl/ShoppingCartImpl.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.shoppingcart.impl;
+
+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.Service;
+
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.payment.Payment;
+import com.tuscanyscatours.shoppingcart.CartCheckout;
+import com.tuscanyscatours.shoppingcart.CartInitialize;
+import com.tuscanyscatours.shoppingcart.CartStore;
+import com.tuscanyscatours.shoppingcart.CartUpdates;
+
+/**
+ * An implementation of the ShoppingCart service
+ */
+@Service(interfaces = {CartInitialize.class, CartUpdates.class, CartCheckout.class})
+public class ShoppingCartImpl implements CartInitialize, CartUpdates, CartCheckout {
+
+ @Reference
+ protected Payment payment;
+
+ @Reference
+ protected CartStore cartStore;
+
+ @Context
+ protected ComponentContext componentContext;
+
+ private static Map<String, CartStore> cartStores = new HashMap<String, CartStore>();
+
+ public String newCart() {
+ String cartId = UUID.randomUUID().toString();
+ ServiceReference<CartStore> cartStore = componentContext.getServiceReference(CartStore.class, "cartStore");
+ cartStore.setConversationID(cartId);
+ cartStores.put(cartId, cartStore.getService());
+
+ return cartId;
+ }
+
+ public void addTrip(String cartId, TripItem trip) {
+ cartStores.get(cartId).addTrip(trip);
+ }
+
+ public void removeTrip(String cartId, TripItem trip) {
+ cartStores.get(cartId).addTrip(trip);
+ }
+
+ public TripItem[] getTrips(String cartId) {
+ return cartStores.get(cartId).getTrips();
+ }
+
+ public void checkout(String cartId, 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;
+
+ TripItem[] trips = getTrips(cartId);
+
+ 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);
+
+ // reset the cart store
+ cartStores.get(cartId).reset();
+ cartStores.remove(cartId);
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..176c031c4c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?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="com.tuscanyscatours.common" />
+ <export.java package="com.tuscanyscatours.payment" />
+ <export.java package="com.tuscanyscatours.shoppingcart" />
+ <export.java package="com.tuscanyscatours.shoppingcart.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/Payment.wsdl b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/Payment.wsdl
new file mode 100644
index 0000000000..3885764899
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/shoppingcart/src/main/resources/Payment.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions name="Payment"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tuscanyscatours.com/Payment/"
+ xmlns:tns="http://www.tuscanyscatours.com/Payment/">
+
+ <xsd:complexType name="MakePaymentMemberType">
+ <xsd:sequence>
+ <xsd:element name="CustomerId" type="xsd:string"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMember" type="tns:MakePaymentMemberType"/>
+
+ <xsd:complexType name="MakePaymentMemberResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="makePaymentMemberResponse" type="tns:MakePaymentMemberResponseType"/>
+
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="MakePaymentMemberRequest">
+ <wsdl:part name="parameters" element="tns:makePaymentMember"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="MakePaymentMemberResponse">
+ <wsdl:part name="parameters" element="tns:makePaymentMemberResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Payment">
+ <wsdl:operation name="makePaymentMember">
+ <wsdl:input message="tns:MakePaymentMemberRequest"></wsdl:input>
+ <wsdl:output message="tns:MakePaymentMemberResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="PaymentBinding" type="tns:Payment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="makePaymentMember">
+ <soap:operation soapAction="http://www.tuscanyscatours.com/Payment/makePayment" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="PaymentService">
+ <wsdl:port name="PaymentPort" binding="tns:PaymentBinding">
+ <soap:address location="http://localhost:8083/Payment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="PaymentLinkType">
+ <plnk:role name="forward" portType="tns:Payment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions> \ No newline at end of file
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/build.xml
new file mode 100644
index 0000000000..45373a4910
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/build.xml
@@ -0,0 +1,26 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-travelcatalog" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ <pathelement path="../currency/target/scatours-contribution-currency.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/pom.xml
new file mode 100644
index 0000000000..f02f8dffe1
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-travelcatalog</artifactId>
+ <name>Apache Tuscany SCA Tours Travel Catalog Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-currency</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/TravelCatalogSearch.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/TravelCatalogSearch.java
new file mode 100644
index 0000000000..e558439f82
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/TravelCatalogSearch.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.travelcatalog;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+/**
+ * The TravelCatalogSearch service interface
+ */
+@Remotable
+public interface TravelCatalogSearch {
+ TripItem[] search(TripLeg tripLeg);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/impl/TravelCatalogImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/impl/TravelCatalogImpl.java
new file mode 100644
index 0000000000..90351720bb
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/java/com/tuscanyscatours/travelcatalog/impl/TravelCatalogImpl.java
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.travelcatalog.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+
+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 com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+import com.tuscanyscatours.currencyconverter.CurrencyConverter;
+import com.tuscanyscatours.travelcatalog.TravelCatalogSearch;
+
+/**
+ * An implementation of the travel catalog 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 List<TripItem> searchResults = new ArrayList<TripItem>();
+
+ CountDownLatch resultsReceivedCountdown;
+
+ // TravelSearch methods
+
+ public TripItem[] search(TripLeg tripLeg) {
+
+ resultsReceivedCountdown = new CountDownLatch(4);
+ searchResults.clear();
+
+ 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);
+
+ System.out.println("going into wait");
+
+ try {
+ resultsReceivedCountdown.await();
+ } catch (InterruptedException ex) {
+ }
+
+ 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 synchronized void searchResults(TripItem[] items) {
+ RequestContext requestContext = componentContext.getRequestContext();
+ Object callbackID = requestContext.getServiceReference().getCallbackID();
+ System.out.println("Asynch response - " + callbackID);
+
+ if (items != null) {
+ for (int i = 0; i < items.length; i++) {
+ searchResults.add(items[i]);
+ }
+ }
+
+ resultsReceivedCountdown.countDown();
+ }
+
+ public void setPercentComplete(String searchComponent, int percentComplete) {
+ // Not used at the moment
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b18ae45a09
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/travelcatalog/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?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="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <export.java package="com.tuscanyscatours.travelcatalog" />
+ <export.java package="com.tuscanyscatours.travelcatalog.impl" />
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/build.xml
new file mode 100644
index 0000000000..6e48af3cf8
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/build.xml
@@ -0,0 +1,26 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-trip" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ </path>
+ <path id="test-path" refid="compile-path"/>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/pom.xml
new file mode 100644
index 0000000000..b2eba45a6b
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/pom.xml
@@ -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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-trip</artifactId>
+ <name>Apache Tuscany SCA Tours Prepackaged Trip Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-policy-logging</artifactId>
+ <version>${tuscany.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripImpl.java
new file mode 100644
index 0000000000..ec90524518
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripImpl.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.trip.impl;
+
+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 com.tuscanyscatours.common.Book;
+import com.tuscanyscatours.common.Search;
+import com.tuscanyscatours.common.SearchCallback;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.common.TripLeg;
+
+/**
+ * An implementation of the Trip 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) {
+ System.out.println("Starting trip search");
+
+ try {
+ Thread.sleep(2000);
+ } catch (Exception ex) {
+ // do nothing
+ }
+
+ // return available hotels
+ searchCallback.searchResults(searchSynch(tripLeg));
+ }
+
+ public int getPercentComplete() {
+ return 100;
+ }
+
+ public String book(TripItem tripItem) {
+ return "trip1";
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripInfo.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripInfo.java
new file mode 100644
index 0000000000..d8809e1325
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/java/com/tuscanyscatours/trip/impl/TripInfo.java
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.tuscanyscatours.trip.impl;
+
+public class TripInfo {
+
+ private String name;
+ private String description;
+ private String fromLocation;
+ private String toLocation;
+ private String fromDate;
+ private String toDate;
+ private String spaces;
+ private double pricePerPerson;
+ private String currency;
+ private String link;
+
+ public TripInfo() {
+ }
+
+ public TripInfo(String name,
+ String description,
+ String fromLocation,
+ String toLocation,
+ String fromDate,
+ String toDate,
+ String spaces,
+ double pricePerPerson,
+ String currency,
+ String link) {
+
+ this.name = name;
+ this.description = description;
+ this.fromLocation = fromLocation;
+ this.toLocation = toLocation;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.spaces = spaces;
+ this.pricePerPerson = pricePerPerson;
+ this.currency = currency;
+ this.link = link;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getFromLocation() {
+ return fromLocation;
+ }
+
+ public void setFromLocation(String fromLocation) {
+ this.fromLocation = fromLocation;
+ }
+
+ public String getToLocation() {
+ return toLocation;
+ }
+
+ public void setToLocation(String toLocation) {
+ this.toLocation = toLocation;
+ }
+
+ public String getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(String fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public String getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(String toDate) {
+ this.toDate = toDate;
+ }
+
+ public String getSpaces() {
+ return spaces;
+ }
+
+ public void setSpaces(String spaces) {
+ this.spaces = spaces;
+ }
+
+ public double getPricePerPerson() {
+ return pricePerPerson;
+ }
+
+ public void setPricePerPerson(double pricePerPerson) {
+ this.pricePerPerson = pricePerPerson;
+ }
+
+ public String getCurrency() {
+ return currency;
+ }
+
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..7f2efe2de7
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <import.java package="com.tuscanyscatours.common"/>
+ <export.java package="com.tuscanyscatours.trip.impl"/>
+</contribution>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/java/scatours/trip/TripTestCase.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/java/scatours/trip/TripTestCase.java
new file mode 100644
index 0000000000..fd2cc073ec
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/java/scatours/trip/TripTestCase.java
@@ -0,0 +1,68 @@
+/*
+ * 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 org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.tuscanyscatours.common.Book;
+import com.tuscanyscatours.common.TripItem;
+
+/**
+ *
+ */
+public class TripTestCase {
+ private static SCANode tripNode;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ try {
+ tripNode =
+ SCANodeFactory.newInstance().createSCANode("trip.composite",
+ new SCAContribution("trip", "./target/classes"),
+ new SCAContribution("trip-test", "./target/test-classes"));
+
+ tripNode.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testPayment() {
+ SCAClient client = (SCAClient)tripNode;
+ Book booking = client.getService(Book.class, "Trip/Book");
+ TripItem tripItem =
+ new TripItem("1234", "5678", TripItem.TRIP, "FS1DEC06", "Florence and Siena pre-packaged tour", "FLR",
+ "06/12/09", "13/12/09", 450, "EUR", "http://localhost:8085/tbd");
+ System.out.println("Result = " + booking.book(tripItem) + "\n");
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ tripNode.stop();
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/definitions.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/definitions.xml
new file mode 100644
index 0000000000..8d7ff59b0c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/definitions.xml
@@ -0,0 +1,32 @@
+<?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://tuscany.apache.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">
+
+ <!-- PolicySets -->
+ <policySet name="JDKLoggingPolicy" provides="tuscany:logging" appliesTo="sca:implementation.java"
+ xmlns="http://www.osoa.org/xmlns/sca/1.0">
+ <tuscany:jdkLogger name="myLogger">
+ <logLevel>FINER</logLevel>
+ </tuscany:jdkLogger>
+ </policySet>
+</definitions>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/trip.composite b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/trip.composite
new file mode 100644
index 0000000000..06c449633c
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/trip/src/test/resources/trip.composite
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://scatours"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ name="packagedtrip">
+
+ <component name="Trip">
+ <implementation.java class="com.tuscanyscatours.trip.impl.TripImpl" requires="tuscany:logging"/>
+ <service name="Search"/>
+ <service name="Book"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/build.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/build.xml
new file mode 100644
index 0000000000..e8e7eb7f10
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/build.xml
@@ -0,0 +1,26 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-contribution-tripbooking" default="compile">
+ <import file="../../antdefs.xml"/>
+ <path id="compile-path">
+ <pathelement path="../common/target/scatours-contribution-common.jar"/>
+ <pathelement path="../shoppingcart/target/scatours-contribution-shoppingcart.jar"/>
+ </path>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/pom.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/pom.xml
new file mode 100644
index 0000000000..42fca6278f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/pom.xml
@@ -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>scatours</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent><version>1.0-SNAPSHOT</version>
+ <artifactId>scatours-contribution-tripbooking</artifactId>
+ <name>Apache Tuscany SCA Tours Trip Booking Contribution</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-data-api</artifactId>
+ <version>${tuscany.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-currency</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-contribution-shoppingcart</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/TripBooking.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/TripBooking.java
new file mode 100644
index 0000000000..0693d40465
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/TripBooking.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.tripbooking;
+
+import org.osoa.sca.annotations.Remotable;
+
+import com.tuscanyscatours.common.TripItem;
+
+/**
+ * The TripBooking service interface
+ */
+@Remotable
+public interface TripBooking {
+
+ TripItem bookTrip(String cartId, TripItem trip);
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/impl/TripBookingImpl.java b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/impl/TripBookingImpl.java
new file mode 100644
index 0000000000..5d1e1f2db5
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/java/com/tuscanyscatours/tripbooking/impl/TripBookingImpl.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.tuscanyscatours.tripbooking.impl;
+
+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.Service;
+
+import com.tuscanyscatours.common.Book;
+import com.tuscanyscatours.common.TripItem;
+import com.tuscanyscatours.shoppingcart.CartUpdates;
+import com.tuscanyscatours.tripbooking.TripBooking;
+
+/**
+ * An implementation of the TripBooking service
+ */
+@Service(interfaces = {TripBooking.class})
+public class TripBookingImpl implements TripBooking {
+
+ @Reference
+ protected Book hotelBook;
+
+ @Reference
+ protected Book flightBook;
+
+ @Reference
+ protected Book carBook;
+
+ @Reference
+ protected Book tripBook;
+
+ @Reference
+ protected CartUpdates cartUpdates;
+
+ @Context
+ protected ComponentContext componentContext;
+
+ public TripItem bookTrip(String cartId, TripItem trip) {
+
+ String bookingCode = "";
+
+ // book any nested items
+ TripItem[] nestedItems = trip.getTripItems();
+ if (nestedItems != null) {
+ for (int i = 0; i < nestedItems.length; i++) {
+ TripItem tripItem = nestedItems[i];
+ if (tripItem.getType().equals(TripItem.CAR)) {
+ tripItem.setBookingCode(carBook.book(tripItem));
+ } else if (tripItem.getType().equals(TripItem.FLIGHT)) {
+ tripItem.setBookingCode(flightBook.book(tripItem));
+ } else if (tripItem.getType().equals(TripItem.HOTEL)) {
+ tripItem.setBookingCode(hotelBook.book(tripItem));
+ } else {
+ tripItem.setBookingCode(tripItem.getType() + " is invalid");
+ }
+ }
+ }
+
+ // book the top level item if it's a packaged trip
+ if (trip.getType().equals(TripItem.TRIP)) {
+ bookingCode = tripBook.book(trip);
+ trip.setBookingCode(bookingCode);
+ }
+
+ // add trip to the shopping cart
+ ServiceReference<CartUpdates> cart = componentContext.getServiceReference(CartUpdates.class, "cartUpdates");
+ cart.setConversationID(cartId);
+ cart.getService().addTrip(cartId, trip);
+
+ return trip;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/resources/META-INF/sca-contribution.xml b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..906f892d1f
--- /dev/null
+++ b/sca-java-1.x/trunk/tutorials/travelsample/contributions/tripbooking/src/main/resources/META-INF/sca-contribution.xml
@@ -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="com.tuscanyscatours.common" />
+ <import.java package="com.tuscanyscatours.currencyconverter" />
+ <import.java package="com.tuscanyscatours.shoppingcart" />
+ <export.java package="com.tuscanyscatours.tripbooking" />
+ <export.java package="com.tuscanyscatours.tripbooking.impl" />
+</contribution>