Implementation POJO Sample
==========================
This sample demonstrates how new implementation types are constructed for 
Apache Tuscany SCA. 

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 it 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-implementation-pojo-extension.jar;target\test-classes helloworld.HelloWorldTestClient

and on *nix do

java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-implementation-pojo-extension.jar:target/test-classes helloworld.HelloWorldTestClient

This looks like a long command. The three things we add to the classpath are

tuscany-sca-manifest.jar                 - all of the standard Tuscany SCA 
                                           runtime and extension classes
sample-implementation-pojo-extension.jar - the new POJO implementation
                                           extension 
target.test-classes                      - application code that uses the
                                           POJO implementation  

Sample Overview
---------------
This sample contains a POJO implementation type as an example of how to create
new implementation types.

implementation-pojo-extension/
  src/
    main/
      java/
        pojo/                  - implementation model interfaces
          impl/                - implementations of the model interfaces
          provider/            - runtime implementation
      resources/
        META-INF/
          services/            - declares the extension
    test/
      java/
        helloworld/
          HelloWorldTestCase.java - JUnit test case
          HelloWorldTestClient.java - Test client with no JUnit dependency
      resources/
        helloworld.composite   - the SCA assembly used during unit testing

  build.xml                    - the Ant build file
  pom.xml                      - the Maven build file
  
Building The Sample Extension Using Ant
-----------------------------------------
With the binary distribution the sample extension can be built and run
using Ant as follows

cd implementation-pojo-extension
ant compile
ant run

You should see the following output from the run target.

run:
     [java] Initializing POJO
     [java] Initializing POJO
     [java] Executing POJO sayHello
     [java] Executing POJO sayHello
     [java] Destroying POJO
     [java] Destroying POJO

Building The Sample Using Maven 
-------------------------------------------
With either the binary or source distributions the sample can be built 
using Maven as follows. 

cd implementation-pojo-extension
mvn

Maven will also test that the sample extension built properly. You should see 
the following output from the test phase.

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running helloworld.HelloWorldTestCase
Initializing POJO
Initializing POJO
Executing POJO sayHello
Initializing POJO
Initializing POJO
Executing POJO sayHello
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.616 sec

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

This shows that the Junit test cases have run successfully. 
