README for the Apache Tuscany SCA Travel Sample 1.0 April 2010 ============================================================== Structure of the travel sample ------------------------------ The travel sample consists of the following directory tree: lib dependencies for the travel sample (see notes below) jaxws jars from the JAX-WS reference implementation junit the Junit jar openejb jars from the OpenEJB binary distribution travelsample top-level directory for the travel sample binaries builds a binaries-only package for the travel sample clients non-SCA clients for the travel sample contributions SCA contributions for the travel sample distribution builds the travel sample distribution domainconfig configuration files for the domain manager launchers launcher programs for the travel sample services non-SCA services used by the travel sample testdomain scratch directory for trying out the domain manager util utility code used by other parts of the travel sample Note1: The travel sample depends on the Apache Tuscany SCA Java 1.x binary distribution, which is downloaded separately from the travel sample. To avoid needless duplication, the "lib" directory of the travel sample only contains dependencies that aren't provided in the current release of the Tuscany SCA Java 1.x binary distribution. Note2: Before attempting to build or run the travel sample, you will need to download the Apache Tuscany SCA Java 1.6 (or later) binary distribution and set your TUSCANY_HOME environment variable to a local directory containing the unpacked binary distribution. Overview of the travel sample ----------------------------- The travel sample consists of a number of related scenarios. For each scenario, this section lists the following: Description: A description of the scenario. Contributions: SCA contributions used in the scenario. Each contribution is a subdirectory of the travelsample/contributions directory. Launchers: Launchers used in the scenario. Each launcher is a subdirectory of the travelsample/launchers directory. Services: Non-SCA services used in the scenario, if any. Each non-SCA service is a subdirectory of the travelsample/services directory. Clients: Non-SCA clients used in the scenario, if any. Each non-SCA client is a subdirectory of the travelsample/clients directory. Webapp: Web application (.war) file used to run the scenario, for those scenarios that use contributions packaged as web applications and deployed in a Web application server such as Tomcat. Details of how to build and run these scenarios can be found in later sections of this file. 1) Jumpstart - First simple example of using Tuscany Description: *** to be added *** Contributions: introducing-trips Launchers: jumpstart 2) Introducing - Simplified introduction to the travel application Description: *** to be added *** Contributions: introducing-client, introducing-tours, introducing-trips Launchers: introducing 3) Introducing (distributed) - Distributed services with a domain manager Description: *** to be added *** Contributions: introducing-client, introducing-tours, introducing-trips Launchers: introducing-client, introducing-domain, introducing-tours, introducing-trips 4) Interaction - Different SCA interaction styles Description: Each SCA interaction pattern is demonstrated using a component from the travel booking application. We’re going to see the Hotel, Calendar, CurrencyConverter and ShoppingCart components used here. These components don't work in isolation so for each interaction pattern we've written a simple client component. For example, the InteractionLocalClient component demonstrates local interactions by sending a local message to the Calendar component. The launcher starts two nodes (node1 and node2) which are used to run samples for all of the interaction patterns. The first node "node1" loads the contributions common, currency, calendar, shoppingcart, and interaction-client, and runs the client.composite from the interaction-client contribution. The local interaction patterns are demonstrated by clients calling the currency, calendar, and shoppingcart components locally within node1. The second node node2 loads the contributions common, hotel, and interaction-service-remote, and runs the service.composite from the interaction-service-remote contribution. This node provides the hotel component that's used by client components in node1 for sending remote messages to demonstrate the remote interaction pattern. Contributions: calendar, common, currency, flight, hotel, interaction-client, interaction-service-remote, shoppingcart Launchers: interaction 5) Full application - The full interactive travel application Description: *** to be added *** Contributions: car, common, creditcard-payment-jaxb-policy, currency, flight, fullapp-bespoketrip, fullapp-coordination, fullapp-currency, fullapp-packagedtrip, fullapp-shoppingcart, fullapp-ui, hotel, payment-spring-policy, scatours, shoppingcart, travelcatalog, trip, tripbooking Launchers: fullapp 6) Full application (distributed) - Distributed services with a domain manager Description: *** to be added *** Contributions: car, common, creditcard-payment-jaxb-policy, currency, flight, fullapp-bespoketrip, fullapp-coordination, fullapp-currency, fullapp-packagedtrip, fullapp-shoppingcart, fullapp-ui, hotel, payment-spring-policy, scatours, shoppingcart, travelcatalog, trip, tripbooking Launchers: fullapp-domain, fullapp-nodes 7) Building blocks - Using SCA composites as application building blocks Description: *** to be added *** Contributions: buildingblocks, buildingblocks-client, introducing-trips Launchers: buildingblocks 8) Blog feed Description: *** to be added *** Contributions: blog-feed Launchers: blog-feed 9) Data binding Description: *** to be added *** Contributions: creditcard-payment-sdo, databinding-client, payment-java Launchers: databinding 10) Feed logger Description: *** to be added *** Contributions: feed-logger Launchers: feed-logger 11) Help pages Description: *** to be added *** Contributions: help-pages Launchers: help-pages 12) Policy Description: *** to be added *** Contributions: creditcard-payment-jaxb-policy, payment-java-policy, policy-client Launchers: policy 13) Payment service with different implementation types Description: *** to be added *** 13a) implementation.bpel Description: *** to be added *** Contributions: creditcard-payment-jaxb, emailgateway, payment-bpel, payment-bpel-process Launchers: payment-bpel 13b) implementation.script written in Groovy Description: *** to be added *** Contributions: creditcard-payment-jaxb, emailgateway, payment-groovy Launchers: payment-groovy 13c) implementation.java Description: *** to be added *** Contributions: creditcard-payment-jaxb, payment-java Launchers: payment-java 13d) implementation.java with policy Description: *** to be added *** Contributions: creditcard-payment-jaxb-policy, payment-java-policy Launchers: payment-java-policy 13e) implementation.spring Description: *** to be added *** Contributions: creditcard-payment-jaxb, payment-spring Launchers: payment-spring 13f) implementation.spring with SCA tags Description: *** to be added *** Contributions: creditcard-payment-jaxb, payment-spring-scatag Launchers: payment-spring-scatag 14) SCA credit card payment service packaged as a web application Description: *** to be added *** Contributions: creditcard-payment-jaxb, creditcard-payment-webapp Webapp: creditcard-payment-webapp 15) SCA currency converter service interoperating with SCA or non-SCA client Description: *** to be added *** 15a) SCA client Description: *** to be added *** Contributions: currency Launchers: currency-converter 15b) CORBA client Description: *** to be added *** Contributions: currency, currency-corba Launchers: currency-converter-corba Clients: currency-converter-corba 15c) JMS client Description: *** to be added *** Contributions: currency, currency-jms Launchers: currency-converter-jms Clients: currency-converter-jms 15d) RMI client Description: *** to be added *** Contributions: currency, currency-rmi Launchers: currency-converter-rmi Clients: currency-converter-rmi 15e) JAX-WS client Description: *** to be added *** Contributions: currency, currency-ws Launchers: currency-converter-ws Clients: currency-converter-ws-jaxws 15f) Web application JSP client Description: *** to be added *** Contributions: currency, currency-jsp Webapp: scatours-contribution-currency-jsp.war 15g) Web application servlet client Description: *** to be added *** Contributions: currency, currency-servlet Webapp: scatours-contribution-currency-servlet.war 16) SCA notification service interoperating with non-SCA SMS gateway service Description: *** to be added *** 16a) SMS gateway CORBA service Description: *** to be added *** Contributions: notification, notification-corba Services: smsgateway-corba Launchers: notification-corba 16b) SMS gateway EJB service Description: *** to be added *** Contributions: notification, notification-ejb Services: smsgateway-ejb Launchers: notification-ejb 16c) SMS gateway JMS service Description: *** to be added *** Contributions: notification, notification-jms Services: smsgateway-jms Launchers: notification-jms 16d) SMS gateway RMI service Description: *** to be added *** Contributions: notification, notification-rmi Services: smsgateway-rmi Launchers: notification-rmi 16e) SMS gateway JAX-WS service Description: *** to be added *** Contributions: notification, notification-ws Services: smsgateway-jaxws Launchers: notification-ws Building the travel sample -------------------------- Please see the BUILDING file in the travel sample distribution for full details of how to build the travel sample using Maven or Ant. Running travel sample scenarios from launcher source directories ---------------------------------------------------------------- After building the travel sample using either Maven or Ant, you can run all the scenarios that have launchers by using ant scripts in the subdirectories of the travelsample/launchers directory. For scenarios that are packaged as web applications and don't have launchers, the next section describes how you can run these. You can run the launcher ant scripts as follows: 1. Open a command prompt. 2. Change directory to travelsample/launchers/ where is the launcher directory for the scenario that you want to run. 3. Enter the command shown in Table 1 below. This command is usually "ant run". This runs an ant script that sets the necessary classpath and invokes the launcher class. 4. Some scenarios require the above steps to be repeated multiple times with different commands. These cases are indicated by entries in Table 1 with more than one command listed. For these scenarios, all the listed commands should be entered in separate command prompts from the same current directory and in the same order as shown. 5. Some scenarios have a browser-based user interface which is started by entering the URL shown in Table 1 in a browser after running the launcher or launchers for the scenario. The recommended browser is Firefox as some scenarios don't work with Internet Explorer. Table 1. Running scenarios packaged as launchers and contributions ----------------------------------------------------------------------------------------------------- | Scenario Launcher directory Commands URLs | ----------------------------------------------------------------------------------------------------- | 1) Jumpstart | jumpstart | ant run | | ----------------------------------------------------------------------------------------------------- | 2) Introducing | introducing | ant run | | ----------------------------------------------------------------------------------------------------- | 3) Introducing | introducing-client | ant run-domain | | | (distributed) | | ant run-trips | | | | | ant run-tours | | | | | ant run | | ----------------------------------------------------------------------------------------------------- | 4) Interaction | interaction | ant run | | ----------------------------------------------------------------------------------------------------- | 5) Full application | fullapp | ant run | http://localhost:8080/scatours | ----------------------------------------------------------------------------------------------------- | 6) Full application | fullapp-nodes | ant run-domain | | | (distributed) | | ant run | | ----------------------------------------------------------------------------------------------------- | 7) Building blocks | buildingblocks | ant run | | ----------------------------------------------------------------------------------------------------- | 8) Blog feed | blog-feed | ant run | http://localhost:8090/BlogAtom | | | | | http://localhost:8090/BlogRSS | | | | | http://localhost:8090/BlogAtomAPIs | | | | | http://localhost:8090/BlogRSSAPIs | ----------------------------------------------------------------------------------------------------- | 9) Data binding | databinding | ant run | | ----------------------------------------------------------------------------------------------------- | 10) Feed logger | feed-logger | ant run | | ----------------------------------------------------------------------------------------------------- | 11) Help pages | help-pages | ant run | http://localhost:8085/help/index.html | ----------------------------------------------------------------------------------------------------- | 12) Policy | policy | ant run | | ----------------------------------------------------------------------------------------------------- | 13) Payment service implementation types | | | | Impl type Launcher directory Commands URLs | ----------------------------------------------------------------------------------------------------- | 13a) BPEL | payment-bpel | ant run | | ----------------------------------------------------------------------------------------------------- | 13b) Groovy | payment-groovy | ant run | | ----------------------------------------------------------------------------------------------------- | 13c) Java | payment-java | ant run | | ----------------------------------------------------------------------------------------------------- | 13d) Java + policy | payment-java-policy | ant run | | ----------------------------------------------------------------------------------------------------- | 13e) Spring | payment-spring | ant run | | ----------------------------------------------------------------------------------------------------- | 13f) Spring SCA tags | payment-spring-scatag | ant run | | ----------------------------------------------------------------------------------------------------- | 15) Currency converter service binding types | | | | Binding type Launcher directory Commands URLs | ----------------------------------------------------------------------------------------------------- | 15a) SCA | currency-converter | ant run | | ----------------------------------------------------------------------------------------------------- | 15b) CORBA | currency-converter-corba | ant run | | | | | ant run-client | | ----------------------------------------------------------------------------------------------------- | 15c) JMS | currency-converter-jms | ant run | | | | | ant run-client | | ----------------------------------------------------------------------------------------------------- | 15d) RMI | currency-converter-rmi | ant run | | | | | ant run-client | | ----------------------------------------------------------------------------------------------------- | 15e) WS | currency-converter-ws | ant run | | | | | ant run-client | | ----------------------------------------------------------------------------------------------------- | 16) Notification reference binding types | | | | Binding type Launcher directory Commands URLs | ----------------------------------------------------------------------------------------------------- | 16a) CORBA | notification-corba | ant run-smsgateway | | | | | ant run | | ----------------------------------------------------------------------------------------------------- | 16b) EJB | notification-ejb | ant run-smsgateway | | | | | ant run | | ----------------------------------------------------------------------------------------------------- | 16c) JMS | notification-jms | ant run-smsgateway | | | | | ant run | | ----------------------------------------------------------------------------------------------------- | 16d) RMI | notification-rmi | ant run-smsgateway | | | | | ant run | | ----------------------------------------------------------------------------------------------------- | 16e) WS | notification-ws | ant run-smsgateway | | | | | ant run | | ----------------------------------------------------------------------------------------------------- Running travel sample scenarios in a Web application server ----------------------------------------------------------- Some scenarios are packaged as web applications (.war files) and don't have launchers. After building the travel sample using either Maven or Ant, you can use a Web application server to run these scenarios. You can run these web applications as follows: 1. Deploy the web application (.war) file to a Web application server such as Tomcat. The .war file can be found in the directory travelsample/contributions//target where is the contribution directory listed in Table 2 below. The name of the .war file is scatours-contribution-.war. 2. Start the browser-based user interface for the scenario by entering its URL in a browser. The URL for each scenario is shown in Table 2. The recommended browser is Firefox because some scenarios don't work with Internet Explorer. Table 2. Running scenarios packaged as web applications -------------------------------------------------------------------------------------------------------------------------- | Scenario | Contribution directory | URL | -------------------------------------------------------------------------------------------------------------------------- | 14) Credit card | creditcard-payment-webapp | http://localhost:8080/scatours-contribution-creditcard-payment-webapp | | webapp service | | | | -------------------------------------------------------------------------------------------------------------------------- | 15f) Currency | currency-jsp | http://localhost:8080/scatours-contribution-currency-jsp | | | converter JSP | | | -------------------------------------------------------------------------------------------------------------------------- | 15g) Currency | currency-servlet | http://localhost:8080/scatours-contribution-currency-servlet | | | converter | | | | servlet | | | -------------------------------------------------------------------------------------------------------------------------- Note: The host name and port number in the above URLs may differ depending on the configuration of the Web application server in which the web application was deployed. Running travel sample scenarios from the "binaries" directory ------------------------------------------------------------- If the travel sample was built using Maven, a binaries/target directory will be created with subdirectories containing all the built jar and war files and runtime dependencies for these files. This enables you to see how a Tuscany application can be packaged in binary form by an application developer for distribution to users of the application. The following subdirectories of binaries/target contain jar and war files for the travel sample: clients - non-SCA clients using various communication technologies contributions - SCA contributions for the travel sample launchers - executable launchers for the travel sample services - non-SCA services using various communication technologies util - jar files needed by other jars in the travel sample webapps - war files for the travel sample The following subdirectories of binaries/target contain runtime dependencies for the above files: domainconfig - domain configuration files jaxws - JAX-WS runtime jars neeed when running the travel sample on JDK 5 lib - Tuscany runtime jars and their dependencies needed by the travel sample (only present if the travel sample was built using "mvn -Pselfcontained") ode - JPA Derby database needed by the ODE runtime openejb - OpenEJB 3.1.2 runtime jars needed by the travel sample You can run the travel sample scenarios that have launchers by doing the following: 1. Open a command prompt. 2. Change directory to travelsample/binaries/target/ where is the directory for the scenario shown in Table 3 below. 3. Enter the command for the scenario shown in Table 3. This runs an ant script that sets the necessary classpath and invokes the launcher class. 4. Some scenarios require the above steps to be repeated multiple times with different commands. These cases are indicated by entries in Table 3 with more than one directory and command listed. For these scenarios, all the listed commands should be entered in separate command prompts from the listed current directories in the same order as shown. 5. Some scenarios have a browser-based user interface which is started by entering the URL shown in Table 3 in a browser after running the launcher or launchers for the scenario. The recommended browser is Firefox as some scenarios don't work with Internet Explorer. Table 3. Running scenarios with launchers from the binaries directory -------------------------------------------------------------------------------------------------------- | Scenario | Directory | Commands | URLs | -------------------------------------------------------------------------------------------------------- | 1) Jumpstart | launchers | ant run-jumpstart | | -------------------------------------------------------------------------------------------------------- | 2) Introducing | launchers | ant run-introducing | | -------------------------------------------------------------------------------------------------------- | 3) Introducing | launchers | ant run-introducing-domain | | | (distributed) | launchers | ant run-introducing-trips | | | | launchers | ant run-introducing-tours | | | | launchers | ant run-introducing-client | | -------------------------------------------------------------------------------------------------------- | 4) Interaction | launchers | ant run-interaction | | -------------------------------------------------------------------------------------------------------- | 5) Full application | launchers | ant run-fullapp | http://localhost:8080/scatours | -------------------------------------------------------------------------------------------------------- | 6) Full application | launchers | ant run-fullapp-domain | | | (distributed) | launchers | ant run-fullapp-nodes | | -------------------------------------------------------------------------------------------------------- | 7) Building blocks | launchers | ant run-buildingblocks | | -------------------------------------------------------------------------------------------------------- | 8) Blog feed | launchers | ant run-blog-feed | http://localhost:8090/BlogAtom | | | | | http://localhost:8090/BlogRSS | | | | | http://localhost:8090/BlogAtomAPIs | | | | | http://localhost:8090/BlogRSSAPIs | -------------------------------------------------------------------------------------------------------- | 9) Data binding | launchers | ant run-databinding | | -------------------------------------------------------------------------------------------------------- | 10) Feed logger | launchers | ant run-feed-logger | | -------------------------------------------------------------------------------------------------------- | 11) Help pages | launchers | ant run-help-pages | http://localhost:8085/help/index.html | -------------------------------------------------------------------------------------------------------- | 12) Policy | launchers | ant run-policy | | -------------------------------------------------------------------------------------------------------- | 13) Payment service implementation types | | | | Impl type Directory Commands URLs | -------------------------------------------------------------------------------------------------------- | 13a) BPEL | launchers | ant run-payment-bpel | | -------------------------------------------------------------------------------------------------------- | 13b) Groovy | launchers | ant run-payment-groovy | | -------------------------------------------------------------------------------------------------------- | 13c) Java | launchers | ant run-payment-java | | -------------------------------------------------------------------------------------------------------- | 13d) Java + policy | launchers | ant run-payment-java-policy | | -------------------------------------------------------------------------------------------------------- | 13e) Spring | launchers | ant run-payment-spring | | -------------------------------------------------------------------------------------------------------- | 13f) Spring SCA tags | launchers | ant run-payment-spring-scatag | | -------------------------------------------------------------------------------------------------------- | 15) Currency converter service binding types | | | | Binding type Directories Commands URLs | -------------------------------------------------------------------------------------------------------- | 15a) SCA | launchers | ant run-currency-converter | | -------------------------------------------------------------------------------------------------------- | 15b) CORBA | launchers | ant run-currency-converter-corba | | | | clients | ant run-currency-converter-corba | | -------------------------------------------------------------------------------------------------------- | 15c) JMS | launchers | ant run-currency-converter-jms | | | | clients | ant run-currency-converter-jms | | -------------------------------------------------------------------------------------------------------- | 15d) RMI | launchers | ant run-currency-converter-rmi | | | | clients | ant run-currency-converter-rmi | | -------------------------------------------------------------------------------------------------------- | 15e) WS | launchers | ant run-currency-converter-ws | | | | clients | ant run-currency-converter-ws-jaxws | | -------------------------------------------------------------------------------------------------------- | 16) Notification reference binding types | | | | Binding type Directories Commands URLs | -------------------------------------------------------------------------------------------------------- | 16a) CORBA | services | ant run-smsgateway-corba | | | | launchers | ant run-notification-corba | | -------------------------------------------------------------------------------------------------------- | 16b) EJB | services | ant run-smsgateway-ejb | | | | launchers | ant run-notification-ejb | | -------------------------------------------------------------------------------------------------------- | 16c) JMS | services | ant run-smsgateway-jms | | | | launchers | ant run-notification-jms | | -------------------------------------------------------------------------------------------------------- | 16d) RMI | services | ant run-smsgateway-rmi | | | | launchers | ant run-notification-rmi | | -------------------------------------------------------------------------------------------------------- | 16e) WS | services | ant run-smsgateway-jaxws | | | | launchers | ant run-notification-ws | | -------------------------------------------------------------------------------------------------------- The scenarios packaged as web applications can be run using .war files from the binaries/target/webapps directory as follows: 1. Deploy the web application (.war) file to a Web application server such as Tomcat. The .war file can be found in the directory travelsample/binaries/target/webapps and has the name listed in Table 4 below. 2. Start the browser-based user interface for the scenario by entering its URL in a browser. The URL for each scenario is shown in Table 4. The recommended browser is Firefox because some scenarios don't work with Internet Explorer. Table 4. Running scenarios packaged as web applications ---------------------------------------------------------------------------------------------------------------------------------------------------- | Scenario | Web application file | URL | ---------------------------------------------------------------------------------------------------------------------------------------------------- | 14) Credit card | scatours-contribution-creditcard-payment-webapp.war | http://localhost:8080/scatours-contribution-creditcard-payment-webapp | | webapp service | | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- | 15f) Currency | scatours-contribution-currency-jsp.war | http://localhost:8080/scatours-contribution-currency-jsp | | | converter JSP | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- | 15g) Currency | scatours-contribution-currency-servlet.war | http://localhost:8080/scatours-contribution-currency-servlet | | | converter | | | | servlet | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- Note: The host name and port number in the above URLs may differ depending on the configuration of the Web application server in which the web application was deployed. Building and running the self-contained travel sample ----------------------------------------------------- The travel sample can be built using the "mvn -Pselfcontained" command. This puts all of its runtime dependencies under the binaries/target directory and doesn't use any files from the Tuscany SCA Java binary distribution. If the travel sample has been built in this way, you can run it as described in the previous section using the same ant scripts. Alternatively you can use the "java -jar" command to run the travel sample executable jars directly using the manifest dependencies in the jar files. For example, the commands ant run-currency-converter-ws ant run-currency-converter-ws-jaxws ant run-smsgateway-corba could be replaced by the commands java -jar scatours-launcher-currency-converter-ws.jar java -jar scatours-client-currency-converter-ws-jaxws.jar java -jar scatours-service-smsgateway-corba.jar Cross-reference of contributions to scenarios --------------------------------------------- The following table shows which contributions are used in which scenarios. contributions/blog-feed 8 contributions/buildingblocks 7 contributions/buildingblocks-client 7 contributions/calendar 4 contributions/car 5, 6 contributions/common 4, 5, 6 contributions/creditcard-payment-jaxb 13a, 13b, 13c, 13e, 13f, 14 contributions/creditcard-payment-jaxb-policy 5, 6, 12, 13d contributions/creditcard-payment-sdo 9 contributions/creditcard-payment-webapp 14 contributions/currency 4, 5, 6, 15a, 15b, 15c, 15d, 15e, 15f, 15g contributions/currency-corba 15b contributions/currency-jms 15c contributions/currency-jsp 15f contributions/currency-rmi 15d contributions/currency-servlet 15g contributions/currency-ws 15e contributions/databinding-client 9 contributions/emailgateway 13a, 13b contributions/feed-logger 10 contributions/flight 4, 5, 6 contributions/fullapp-bespoketrip 5, 6 contributions/fullapp-coordination 5, 6 contributions/fullapp-currency 5, 6 contributions/fullapp-packagedtrip 5, 6 contributions/fullapp-shoppingcart 5, 6 contributions/fullapp-ui 5, 6 contributions/help-pages 11 contributions/hotel 5, 6 contributions/interaction-client 4 contributions/interaction-service-remote 4 contributions/introducing-client 2, 3 contributions/introducing-tours 2, 3 contributions/introducing-trips 1, 2, 3, 7 contributions/notification 16a, 16b, 16c, 16d contributions/notification-corba 16a contributions/notification-ejb 16b contributions/notification-jms 16c contributions/notification-rmi 16d contributions/payment-bpel 13a contributions/payment-bpel-process 13a contributions/payment-groovy 13b contributions/payment-java 9, 13c contributions/payment-java-policy 12, 13d contributions/payment-spring 13e contributions/payment-spring-policy 5, 6 contributions/payment-spring-scatag 13f contributions/policy-client 12 contributions/scatours 5, 6 contributions/shoppingcart 4, 5, 6 contributions/travelcatalog 5, 6 contributions/trip 5, 6 contributions/tripbooking 5, 6