blob: 1b5b76e4b6a0d550134a90b4920e9625b77eb6f9 (
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
|
package tuscany;
import org.apache.tuscany.sca.node.Contribution;
import org.apache.tuscany.sca.node.ContributionLocationHelper;
import org.apache.tuscany.sca.node.Node;
import org.apache.tuscany.sca.node.NodeFactory;
import client.RuntimeBridge;
import client.TestConfiguration;
/**
* An implementation of the Runtime Bridge for the Apache Tuscany SCA runtime (version 2.x)
* @author Kelvin Goodson
*
*/
public class TuscanyRuntimeBridge implements RuntimeBridge {
static final String CONTRIBUTION_LOCATION_PROPKEY = "OASIS_TESTENV_CONTRIBUTION_LOCATION";
protected NodeFactory launcher;
protected Node node;
TestConfiguration testConfiguration = null;
public TuscanyRuntimeBridge() {
}
public TestConfiguration getTestConfiguration() {
return testConfiguration;
}
public void setTestConfiguration(TestConfiguration testConfiguration) {
this.testConfiguration = testConfiguration;
}
public boolean startContribution(String contributionLocation,
String[] contributionNames) throws Exception {
try {
// Tuscany specific code which starts the contribution(s) holding the test
launcher = NodeFactory.newInstance();
Contribution[] contributions = new Contribution[contributionNames.length];
String[] contributionURIs = getContributionURIs( contributionLocation );
for( int i = 0; i < contributions.length ; i++ ) {
contributions[i] = new Contribution(contributionNames[i], contributionURIs[i]);
} // end for
node = launcher.createNode(testConfiguration.getComposite(), contributions );
System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader());
// Start the node
node.start();
} catch (Exception e) {
System.out.println( e.getMessage() );
e.printStackTrace();
throw e;
} // end try
return true;
} // end method startContribution
/**
* Gets the location of the Contributions as URIs
* @param contributionLocation - a location pattern URI, which contains one or more "%1"
* substrings, which are substituted with the name of the contribution to get the URI of
* the contribution
* @return the contribution locations as an array of Strings
*/
protected String[] getContributionURIs(String contributionLocation) throws Exception {
String[] locations;
locations = testConfiguration.getContributionNames();
if( locations != null && contributionLocation != null ) {
for( int i=0; i < locations.length; i++ ) {
String aLocation = contributionLocation.replaceAll("%1", locations[i]);
locations[i] = aLocation;
} // end for
} else {
if( locations == null ) {
// No contribution specified - throw an Exception
throw new Exception("Unable to start SCA runtime - no contribution supplied - error");
} else {
// No contribution location supplied - throw an Exception
throw new Exception("Unable to start SCA runtime - no contribution location supplied - error");
} // end if
} // end if
return locations;
} // end getContributionURI
public void stopContribution() {
if (node != null) {
node.stop();
node.destroy();
} // end if
if (launcher != null) {
launcher.destroy();
} // end if
} // end method stopContribution
public String getContributionLocation(Class<?> testClass) {
return ContributionLocationHelper.getContributionLocation(testConfiguration.getTestClass());
} // end method getContributionLocation
} // end class TuscanyRuntimeBridge
|