summaryrefslogtreecommitdiffstats
path: root/java/sca/samples/implementation-composite/README
blob: 27de00e8efb6b1c9101454c0f0229d8d0195d4e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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.