| Composite Implementation Sample |
| =============================== |
| |
| This sample shows how composites can be used to implement components. |
| |
| 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-composite.jar composite.CompositeClient |
| |
| and on *nix do |
| |
| java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-implementation-composite.jar composite.CompositeClient |
| |
| |
| Sample Overview |
| --------------- |
| |
| The sample is comprised of three composites. Take a look at the composite file |
| or the .svg/.png file which shows the composite file in pictorial form. The |
| OuterComposite defines three components two of which are implemented using |
| composites. The SourceComponent calls each TargetComponent in turn. There is a |
| callback which returns from each TargetComponent to the SourceComponent. |
| |
| implementation-composite/ |
| src/ |
| main/ |
| java/ |
| composite/ |
| Source.java - interface for the source component |
| SourceImpl.java - implementation for the source component |
| SourceCallback.java - source component callback interface |
| Target.java - interface for the target component |
| TargetImpl.java - implementation for the target component |
| CompositeClient.java - starts the SCA Runtime and |
| deploys the OuterComposite.composite. |
| This in turn pulls in the two inner |
| composites |
| resources/ |
| META-INF/ |
| sca-contribution.xml - specifies the composite to be deployed |
| OuterComposite.composite - the top level SCA assembly for this sample |
| InnerComposite.composite - included by OuterComposite.composite |
| InnerComposite2.composite - included by OuterComposite.composite |
| test/ |
| java/ |
| composite/ |
| CompositeTestCase.java - JUnit test case |
| implementation-composite.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 implementation-composite |
| ant compile |
| ant run |
| |
| You should see the following output from the run target. |
| |
| run: |
| [java] Main thread Thread[main,5,main] |
| [java] Source: Client.main -> Source.clientMethod |
| [java] Source: Client.main => Source.clientMethod2 |
| [java] Sleeping ... |
| [java] Target: Client.main -> Source.clientMethod |
| [java] Work thread Thread[pool-1-thread-1,5,main] |
| [java] Result: Client.main -> Source.clientMethod -> Target.someMethod |
| [java] Target: Client.main => Source.clientMethod2 |
| [java] Work thread Thread[pool-1-thread-2,5,main] |
| [java] Result: Client.main => Source.clientMethod2 -> Target.someMethod |
| |
| |
| 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 implementation-composite |
| mvn |
| |
| You should see the following output from the test phase. |
| |
| ------------------------------------------------------- |
| T E S T S |
| ------------------------------------------------------- |
| Running composite.CompositeTestCase |
| Main thread Thread[main,5,main] |
| Source: Client.main -> Source.clientMethod |
| Source: Client.main => Source.clientMethod2 |
| Sleeping ... |
| Target: Client.main => Source.clientMethod2 |
| Work thread Thread[pool-1-thread-2,5,main] |
| Result: Client.main => Source.clientMethod2 -> Target.someMethod |
| Target: Client.main -> Source.clientMethod |
| Work thread Thread[pool-1-thread-1,5,main] |
| Result: Client.main -> Source.clientMethod -> Target.someMethod |
| Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.973 sec |
| |
| Results : |
| |
| Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 |
| |
| This shows that the Junit test cases have run successfully. |