diff options
Diffstat (limited to 'java/sca-contrib/samples/calculator-implementation-policies/README')
-rw-r--r-- | java/sca-contrib/samples/calculator-implementation-policies/README | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/java/sca-contrib/samples/calculator-implementation-policies/README b/java/sca-contrib/samples/calculator-implementation-policies/README new file mode 100644 index 0000000000..bd66eee1c9 --- /dev/null +++ b/java/sca-contrib/samples/calculator-implementation-policies/README @@ -0,0 +1,266 @@ +Calculator Implementation Policies Sample
+=========================================
+This sample builds over simple calculator sample to demonstrate how Implementation Policies can
+be use in Tuscany SCA Java.
+
+The README in the samples directory (the directory above this) provides
+general instructions about building and running samples. Take a look there
+first.
+
+If you just want to run the sample to see what happens open a command prompt, navigate
+to this sample directory and do:
+
+ant run
+
+OR if you don't have ant, on Windows do
+
+java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator.jar calculator.CalculatorClient
+
+and on *nix do
+
+java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-calculator.jar calculator.CalculatorClient
+
+
+Sample Overview
+---------------
+The sample provides the calculator service with a default SCA (java) binding. The 'logging' policy
+which is handled by the Tuscany SCA java policy-logging module is used in this calculator
+composite to specify the need for 'logging'. The MultiplyService Component specifies for 'jassAuthentication'
+which is one way of implemention login authentication, using the Java Authentication and Authorization Service.
+
+The logging intent and policyset that is to be used by this calculator application must be
+defined in the definitions.xml file. Here we use the policyset structure already defined in
+Tuscany for logging under the policy-logging and hence there is no need to specify the policyset processors
+and policy handler classes as part of this application.
+
+Similarly the jaasAuthentication intent and policyset also is defined in the definitions.xml file
+of this sample. This sample uses the calculator.security.JaasLoginModule class for handling the
+authentication functions. Right now there is a simply matching of userid and passwords that happens in this
+class. Applications could implement their own sophisticated authentication mechanisms. For more information
+on how to do this please look up Java Authentication and Authorization Service documentation. The sample
+also use the calculator.security.CalculatorCallbackHandler to fetch the userid and password to be use for the
+login authentication. This handler presently uses hardcoded userids and passwords. Applications could
+typically use this handler to prompt for userid and passwords.
+
+There are two components that provide the calculator service namely 'CalculatorServiceComponent'
+and 'AnotherCalculatorServiceComponent'. The logging intent is specified for the 'subtract' and 'divide'
+operations of the 'CalculatorServiceCompnent' implementation, and on the entire implementation
+(i.e. all operations) for the AddServiceComponent and AnotherCalculatorServiceComponent.
+
+The CalculatorClient first exercises the CalculatorServiceComponent calling add,
+subtract, multiply and divide operations. This results in logging messages appearing on the
+console for 'add', 'subtract' and 'divide' operations. The CalculatorClient then exercises the
+AnotherCalculatorServiceComponent calling all the service methods. This will result in logging messages
+printed on the console for all the operations. For the 'add' operation there will be two sets of messages
+printed - one that has resulted from specifying the 'logging' intent on the implementation element of the
+'AnotherCalculatorServiceComponent' and another from specifying the 'logging' intent on the
+'AddServiceComponent'
+
+The jaasAuthentication intent is specified for the 'MultiplyServiceComponent'. So everytime this component
+is invoke an authentication is attempted and only if it succeeds, is the multiply function is invoked. The
+console prints messages that denote if the authentication has succeeded or failed.
+
+Thus this sample demonstrates how intents could be applied to either implementations as a whole or to some
+selective operations on an implementation.
+
+
+calculator/
+ src/
+ main/
+ java/
+ calculator/
+ CalculatorService.java - the first component, calls +-/* as
+ appropriate
+ CalculatorServiceImpl.java
+ AddService.java - adds two numbers
+ AddServiceImpl.java
+ SubtractService.java - subtracts one number from another
+ SubtractServiceImpl.java
+ MultiplyService.java - multiplies two numbers
+ MultiplyServiceImpl.java
+ DivideService.java - divides one number by another
+ DivideServiceImpl.java
+ CalculatorClient.java - starts the SCA Runtime and
+ deploys the Calculator.composite.
+ It then calls the deployed Calculator
+ Components services
+ calculator/security
+ JaasLoginModule.java JaasLoginModule implementation for this sample
+ CalculatorCallbackHandler.java JAAS callbackhandler for fetching userid and password
+
+
+ resources/
+ Calculator.composite - the SCA assembly for this sample
+ definitions.xml - sca definitions file that defines the 'logging' intent
+ and policyset
+ used by this application
+ CalculatorLogMessages.properties - A resource bundle contain the log messages to be
+ used.
+ CalculatorJaas.config - JAAS Login Configuration file
+
+ test/
+ java/
+ calculator/
+ CalculatorTestCase.java - JUnit test case
+ calculator.png - a pictorial representation of the sample
+ .composite file
+ build.xml - the Ant build file
+ pom.xml - the Maven build file
+
+
+
+Building And Running The Sample Using Ant
+-----------------------------------------
+With the binary distribution the sample can be built and run using Ant as
+follows
+
+cd calculator-implementation-policies
+ant compile
+ant run
+
+You should see the following output from the run target.
+
+run:
+ [java] Calling CalculatorServiceComponent configured with 'logging' policy for subtract and divide operations...
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - add
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - add
+ [java] 3 + 2=5.0
+ [java] 3 - 2=1.0
+ [java] 3 * 2=6.0
+ [java] 3 / 2=1.5
+ [java] Calling CalculatorServiceComponent configured with 'logging' for all operations in the implementation...
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - subtract
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - subtract
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - divide
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - divide
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] 3 + 2=5.0
+ [java] 3 - 2=1.0
+ [java] 3 * 2=6.0
+ [java] INFO: Invoking operation - add
+ [java] 3 / 2=1.5
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - add
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - add
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - add
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - subtract
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - subtract
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - multiply
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - multiply
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Invoking operation - divide
+ [java] Nov 23, 2007 1:06:10 PM
+ [java] INFO: Returned from operation - divide
+
+Building And Running The Sample Using Maven
+-------------------------------------------
+With either the binary or source distributions the sample can be built and run
+using Maven as follows.
+
+cd calculator
+mvn
+
+You should see the following output from the test phase. Notice the log messages.
+
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running calculator.CalculatorTestCase
+Dec 18, 2007 12:05:06 PM org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader$1 error
+WARNING: XMLSchema validation problem in: file:/F:/LatestTrunk/sca/samples/calculator-implementation-policies/target/
+classes/Calculator.composite, line: 28, column: 4
+cvc-complex-type.2.4.a: Invalid content was found starting with element 'operation'. One of '{WC[##other:"http://www.
+osoa.org/xmlns/sca/1.0"]}' is expected.
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - add
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation add with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - add
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation add with return value 5
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - subtract
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation subtract with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - subtract
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation subtract with return value 1
+Successfully AUTHENTICATED!!
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - divide
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation divide with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - divide
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation divide with return value 1.5
+Dec 18, 2007 12:05:06 PM org.apache.tuscany.sca.contribution.processor.ValidatingXMLStreamReader$1 error
+WARNING: XMLSchema validation problem in: file:/F:/LatestTrunk/sca/samples/calculator-implementation-policies/target/
+classes/Calculator.composite, line: 28, column: 4
+cvc-complex-type.2.4.a: Invalid content was found starting with element 'operation'. One of '{WC[##other:"http://www.
+osoa.org/xmlns/sca/1.0"]}' is expected.
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - add
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation add with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - add
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation add with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - add
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation add with return value 5
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - add
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation add with return value 5
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - subtract
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation subtract with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - subtract
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation subtract with return value 1
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - multiply
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation multiply with arguments 3.0, 2.0,
+Successfully AUTHENTICATED!!
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - multiply
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation multiply with return value 6
+Dec 18, 2007 12:05:06 PM
+INFO: Invoking operation - divide
+Dec 18, 2007 12:05:06 PM
+FINER: Inovoking operation divide with arguments 3.0, 2.0,
+Dec 18, 2007 12:05:06 PM
+INFO: Returned from operation - divide
+Dec 18, 2007 12:05:06 PM
+FINER: Returning from operation divide with return value 1.5
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.823 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+This shows that the Junit test cases have run successfully.
|