BigBank Demo
============

This application is made of 3 modules that represent the different aspects 
of a fictitious banking application. Please see bigbank.png for a diagram of this demo.

To run the bigbank demo you need to first run the bigbank-calculator and bigbank-stockquote demos. This will start these
applications on separate copies of the Tuscany runtime and make them available as services. The bigbank demo is dependent
on these services.


Start bigbank-calculator demo
-----------------------------
The bigbank-calculator demo is a calculator application which handles add, subtract, multiply and divide operations.
Each of these operations is implemented in a different language, including JavaScript, Groovy, Ruby and Python.

To run the bigbank-calculator demo and make it available as a service for this demo do the following:

cd bigbank-calculator
ant run

OR if you don't have ant, on Windows do

java -cp ..\..\lib\tuscany-sca-manifest.jar;target\demo-bigbank-calculator.jar calculator.demo.CalculatorServer

and on *nix do

java -cp ../../lib/tuscany-sca-manifest.jar:target/demo-bigbank-calculator.jar calculator.demo.CalculatorServer

.. Leave the server running


Start bigbank-stockquote demo
-----------------------------
This is a very simple web services based stock quote application which returns random stock quotes on request. Please note that the stockquote service
is not live and is implemented instead to allow for this application to always run without depending on the availability of a web service.

cd bigbank-stockquote
ant run

OR if you don't have ant, on Windows do

java -cp ..\..\lib\tuscany-sca-manifest.jar;target\demo-bigbank-stockquote.jar stockquote.demo.StockQuoteServer

and on *nix do

java -cp ../../lib/tuscany-sca-manifest.jar:target/demo-bigbank-stockquote.jar stockquote.demo.StockQuoteServer

.. Leave the server running


Start bigbank demo
------------------
The main bigbank demo comprises two subsystems that are built from two distinct contributions coming from the
following demo modules ...

1) bigbank
	This contains all artifacts that make up the main bigbank application.  This is the application that the 
	end user interacts with.
	
2) bigbank-account
	This contains all artifacts that deal with account management within the bigbank demo.  The services 
	offered by the bigbank-account module are used by the bigbank module.  The end user doesn't directly 
	interact with the bigbank-account module.
	
Besides using bigbank-account the bigbank composite application invokes services in bigbank-stockquote and 
bigbank-calculator. 

Start the bigbank application in the following way:

cd bigbank
ant run

OR if you don't have ant, on Windows do

java -cp ..\..\lib\tuscany-sca-manifest.jar;target\demo-bigbank.jar bigbank.demo.BigBankServer

and on *nix do

java -cp ../../lib/tuscany-sca-manifest.jar:target/demo-bigbank.jar bigbank.demo.BigBankServer

.. Leave the server running


Bigbank and SCA Policies
------------------------
The Bigbank demo uses the Tuscany Policy Framework to enforce security in the following ways:

Authentication
--------------
	The bigbank-account subsystem enforces authentication as a required security characteristic for
	all interactions with its CheckingAccountService.  Hence the bigbank application which is a client
	to this service authenticates itself for every interaction with the CheckingAccountService.  The interaction
	between the bigbank application and the CheckingAccountService is over the web service binding.
	
Integrity
---------
	All interactions of the bigbank application with the StockQuoteService are guarded with message integrity.
	These interactions use the web service binding.
	
Authorization
-------------
	Within the bigbank-account subsystem the CheckingAccountService implementation enforces authorization on
	its operations.  This is an instance of a custom policy enforcement i.e. the CheckingAccountService 
	component's implementation has defined its own customized way of authorizing access to its services.

	
Demonstrated Features 
---------------------
This demo illustrates the following : -
- composition of an application using artifacts belonging to multiple contributions (here two)
- usage of SCA policies in composite definitions with specific emphasis on enabling security

	
Run the demo
------------ 
The front end of this demo application is a web app which users JSON-RPC to communicate with the back end for
retrieving account information. 

To try the app out point your browser at:

http://localhost:8085/AccountJSON.html

This should display an interface with a single button that retrieves a single set of account details
exercising services across the three running SCA applications. 

If you press the getAccountReport button, you'll see a summary response posted in the browser and 
the detailed data will be displayed in the console where you started bigbank. Among other things
you will note messages that confirm the enforcement of AUTHENTICATION, AUTHORIZATION and
SIGNING of messages exchaged.

On the console where you have started the StockQuote Service you should also be able to see messages
that confirm the signing of messages exchanged.


Stop the demo
-------------
Go to each of the corresponding command line screens and hit 'enter'. 
This will stop each of the applications.
 

Building the Demo Using Ant
---------------------------
With the binary distribution the demo can be built using Ant as follows:

cd bigbank-calculator
ant compile

cd bigbank-stockquote
ant compile

cd bigbank-account
ant compile

cd bigbank
ant compile


Building the Demo Using Maven 
-----------------------------
With either the binary or source distribution the demo can be built using
Maven as follows:

cd bigbank-calculator
mvn

cd bigbank-stockquote
mvn

cd bigbank-account
mvn

cd bigbank
mvn
