Store Tutorial
==============

This tutorial that shows how to use SCA and Tuscany to build multiple
variations of an online Store application. The variations demostrate the
evolution of the Store as it goes through the following stages:

1 - Initial online fruit store
2 - Fruit store merges with vegetable store to form the fruit and vegetable store
3 - The fruit and vegetable store moves to using a database for storing the cart
4 - The fruit and vegetable store acts as a supplier to other online stores
5 - The fruit and vegetable store ships their software solution to another geography
6 - The fruit and vegetable store running in the enterprise

For diagrams of the scenarios covered here, please refer to Tutorial.pdf

Running The Tutorial Application
--------------------------------

First start the SCA Domain Manager:

   cd domain
   ant run

Alternatively, on linux:

   cd domain
   java -jar ../../../modules/tuscany-node-launcher-1.6.jar domain

and on windows:

   cd domain
   java -jar ..\..\..\modules\tuscany-node-launcher-1.6.jar domain

Access the SCA Domain Manager application by pointing your Web browser at:

   http://localhost:9990/ui/cloud/

This shows you all of the Tuscany nodes that are configured to run 
in the store tutorial domain. If you are interested, the configuration
is stored on disc in the store/domain directory but for now let's just 
start some nodes and see what happens.

Starting nodes using the Domain Manager
---------------------------------------

The different nodes you see on the Cloud page are used to start different scenarios
in the tutorial. Select the node you want to start (e.g StoreNode), then click the 
Start button. You may need to give the nodes a little time to start up. Check the
console where you lauched the domain manager application and you will see the 
following message when nodes have started.

INFO: INFO: Press 'q' to quit, 'r' to restart.

Remember to shut down the nodes before you exit the domain manager application.

Starting nodes from the command line
------------------------------------

When you start nodes using the Domain Manager, the nodes run in the same process
as the Domain Manager.  In some cases (e.g., debugging a node) it may be better
to start each node in its own separate process using the command line.  This can
also be useful if you encounter problems with the Domain Manager becoming
unresponsive or hanging.

To start a node using the command line, open a separate command prompt for each
node that you want to start.  At the command prompt, enter

   cd domain
   ant run<nodename>

You need to replace <nodename> by the name of the node that you are starting,
excluding the "Node" suffix.  For example, to start StoreNode you would enter

   ant runStore

When you start a node from the command line, the status column on the Cloud
page of the Domain Manager doesn't update and the status column still shows
the node as stopped even though it's running.  This doesn't affect the correct
operation of the node.  To shut down the node, enter 'q' at the command prompt.

Running the scenarios
---------------------

The following sections describe the nodes you need to start for each scenario
and give some useful links to explore once the node has started. 

1 - Initial online fruit store
------------------------------

Start 

   StoreNode 

The store itself can be found at 
     
   http://localhost:8100/ui/ 

If you want to look at how Tuscany provides remote bindings you can take
a look at the service description that Tuscany created automatically
for the store catalog service which is exposed over a JSONRPC binding 
Point your browser at:
  
    http://localhost:8100/StoreCatalog?smd
  
The service is configured in the SCA composite file in the following way:

	<component name="StoreCatalog">
		<implementation.java class="services.FruitsCatalogImpl"/> 
		<property name="currencyCode">USD</property>
		<service name="Catalog">
			<t:binding.jsonrpc/>
   		</service>
		<reference name="currencyConverter" target="StoreCurrencyConverter"/>	
	</component>   

Note the inclusion of <t:binding.jsonrpc/>. This is all that is required to 
make this service available over JSONRPC. If you want to expose the service
over web services simply add <binding.ws/> instead of (or as well as) <t:binding.jsonrpc/>. 

2 - Fruit store merges with vegetable store to form the fruit and vegetable store
---------------------------------------------------------------------------------

Start 

   CatalogsNode
   StoreMergerNode 

The store itself can be found at 
     
   http://localhost:8101/ui/

Now you see that there are more items in the catalog as the fruit and 
vegetable catalogs are both providing content. The vegetable catalog
that was introduced during the merger is contacted using web services.
If you want to see the WSDL for the vegetable catalog point your browser
at

http://localhost:8200/VegetablesCatalogWebService?wsdl

The vegetable catalog service is configured in an SCA composite file
in the following way:

	<component name="VegetablesCatalogWebService">
		<implementation.java class="services.VegetablesCatalogImpl"/>
		<service name="Catalog">
			<binding.ws/>
		</service> 
	</component>

3 - The fruit and vegetable store moves to using a database for storing the cart
--------------------------------------------------------------------------------

Start
   
   CatalogsNode
   StoreDBNode 

The store itself can be found at 

   http://localhost:8102/ui/

This looks the same as the scenario 2 store but this time a database is used
for storing items put into the shopping cart. When you add items you 
will see messages on the console indicating that items are added to the
database. For example. 

INFO: insert into Cart values ('cart-8c8bcc43-5036-4e9a-b282-0dd3d00d350c', 'Apple', '$2.99')

This scenario shows how you change the implementation of a service without 
changing any of the configuration of the rest of the application

4 - The fruit and vegetable store acts as a supplier to other online stores
---------------------------------------------------------------------------

Start 

   CatalogsNode
   StoreSupplierNode

The store itself can be found at 

   http://localhost:8103/ui/
  
Again this is the same basic store as in scenario 3. However this time the 
shopping cart and catalog services have been given additional remote bindings so that
the services can be accessed by others. For example, take a look at the WSDL
description of the shopping cart service that is now available at:

   http://localhost:8333/ShoppinCartTotalWebService?wsdl

This WSDL is available as the shopping cart total service is now configured with a web services
binding in the following way:

 	<component name="StoreSupplierShoppingCart">
		<implementation.java class="services.db.ShoppingCartTableImpl"/>
		<property name="database">../store-supplier/target/cart-db</property>
		<service name="Cart">
			<t:binding.atom uri="/ShoppingCart/Cart"/>
		</service>    	
		<service name="Total">
			<t:binding.jsonrpc/>
			<binding.ws uri="/ShoppinCartTotalWebService"/>
		</service>
	</component>

If you want to actually exercise these services from a standalone application
you can run up the StoreClientNode by doing the following from a command prompt:

   cd store-client
   ant run

5 - The fruit and vegetable store ships their software solution to another geography
------------------------------------------------------------------------------------

Start
  
   CatalogsNode
   CurrencyNode
   StoreEUNode

The store itself can be found at 

   http://localhost:8104/ui/

Notice now that the prices are quoted in Euros and the language is French. This was 
achieved by editing the store.html file to change the language and presentation to 
be appropriate for Europe. The currency was changed by reconfiguring the catalog
component to use EUR instead of USD.

	<component name="StoreEUCatalog">
		<implementation.java class="services.merger.MergedCatalogImpl"/> 
		<property name="currencyCode">EUR</property>
                ...
        </component>

6 - The fruit and vegetable store running in the enterprise
-----------------------------------------------------------

Start 

   CatalogsNode
   StoreEnterpriseNode 

Separately run from a command prompt: 

   cd domain
   ant runWarehouseSpring

This runs a launcher program which starts the node for the warehouse based on local
configuration. It doesn't use the domain manager like the other nodes we started. 
It also starts an ActiveMQ broker via which JMS messages will pass. 

The store itself can be found at 
     
   http://localhost:8108/ui/

The items in the catalog are much the same as the previous examples. 
This time though when you place the order a message is sent over JMS to 
the warehouse component running outside the domain and listening on JMS. 
In this case we have implemented the warehouse application using SCA and it
has its own UI. The UI can be found at

   http://localhost:8088/ui/

If you press the Refresh button, you should see the orders accumulating.
You can't do anything with the orders but it is just a demo.

The warehouse component is configured in the composite file in the following way:

	<component name="Warehouse">
		<implementation.java class="services.WarehouseImpl"/> 
		<service name="Warehouse">
			<t:binding.jsonrpc uri="http://localhost:8088/Warehouse"/>
            <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> 

And the shopping cart component that talks to it is configured as follows

	<component name="StoreEnterpriseShoppingCart">
		<implementation.java class="services.ShoppingCartImpl"/>
		<service name="Cart">
			<t:binding.atom uri="/ShoppingCart/Cart"/>
		</service>    	
		<service name="Total">
			<t:binding.jsonrpc/>
		</service>
        <reference name="warehouse" multiplicity="0..1" >
            <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
                         jndiURL="tcp://localhost:61619">
                 <destination name="RequestQueue" create="always"/>
                 <response>
                     <destination name="ResponseQueue" create="always"/>
                 </response>
            </binding.jms>
        </reference>
	</component>


For more detailed information about how to get started with Apache Tuscany
see our online guides at:

http://tuscany.apache.org/sca-java-getting-started-guides-1x.html


Building the Store Tutorial Using Ant
-------------------------------------
With the binary distribution the complete store tutorial can be built using Ant
as follows:

cd store
ant compile


Building the Store Tutorial Using Maven 
---------------------------------------
With either the binary or source distribution the complete store tutorial can
be built using Maven as follows:

cd store
mvn
