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.