Author: rfeng
Date: Sat Mar 1 23:36:10 2008
New Revision: 632719
URL: http://svn.apache.org/viewvc?rev=632719&view=rev
Log:
Fix the build break
Modified:
incubator/tuscany/java/sca/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java
Modified:
incubator/tuscany/java/sca/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java?rev=632719&r1=632718&r2=632719&view=diff
==============================================================================
---
incubator/tuscany/java/sca/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java
(original)
+++
incubator/tuscany/java/sca/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java
Sat Mar 1 23:36:10 2008
@@ -18,7 +18,6 @@
*/
package org.apache.tuscany.sca.test.contribution;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -31,7 +30,7 @@
import java.util.List;
import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.contribution.util.ServiceDiscovery;
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
import org.junit.After;
import org.junit.Assert;
@@ -49,352 +48,256 @@
// and this is going to be difficult to maintain
// Second its usage of reflection requires the Tuscany implementation classes
// to be made public and this breaks isolation between modules.
-
public class TuscanyClassloadingTestCaseFIXME {
-
-// private static final int SCA_API = 1;
-// private static final int TUSCANY_CORE_SPI = 2;
-// private static final int TUSCANY_RUNTIME = 3;
-// private static final int TUSCANY_EXTENSIONS = 4;
-// private static final int TUSCANY_DEPENDENCIES = 0;
-
-
-
- private static final String[] scaApiJars = {
- "sca-api"
- };
- private static final String[] tuscanyCoreSpiJars = {
- "core-spi",
- "interface",
- "interface-java",
- "interface-wsdl",
- "assembly",
- "policy",
- "databinding",
- "contribution",
- "definitions"
- };
- private static final String[] tuscanyRuntimeJars = {
-
- "binding-sca-xml",
- "binding-sca",
- "assembly-java-dsl",
- "assembly-xml",
- "assembly-xsd",
- "contribution-impl",
- "contribution-java",
- "contribution-namespace",
- "core-databinding",
- "core-spring",
- "core",
- "definitions-xml",
- "domain-api",
- "domain-impl",
- "domain",
- "extension-helper",
- "host-embedded",
- "interface-java-xml",
- "interface-wsdl-xml",
- "java2wsdl",
- "node-api",
- "node-impl",
- "node",
- "osgi-runtime",
- "policy-logging",
- "policy-security",
- "policy-transaction",
- "policy-xml",
- "wsdl2java"
- };
- private static final String[] tuscanyExtensionJars = {
- "binding-dwr",
- "binding-ejb",
- "binding-feed",
- "binding-http",
- "binding-jms",
- "binding-jsonrpc",
- "binding-notification",
- "binding-rmi",
- "binding-sca-axis2",
- "binding-ws-axis2",
- "binding-ws-xml",
- "binding-ws",
- "databinding-axiom",
- "databinding-fastinfoset",
- "databinding-jaxb",
- "databinding-json",
- "databinding-saxon",
- "databinding-sdo-axiom",
- "databinding-sdo",
- "databinding-xmlbeans",
- "host-http",
- "host-jetty",
- "host-rmi",
- "host-tomcat",
- "host-webapp",
- "implementation-das.jar",
- "implementation-data.jar",
- "implementation-java-runtime",
- "implementation-java-xml",
- "implementation-java",
- "implementation-node-runtime",
- "implementation-node-xml",
- "implementation-node",
- "implementation-notification",
- "implementation-osgi",
- "implementation-resource",
- "implementation-script",
- "implementation-spring",
- "implementation-xquery",
- "contribution-osgi"
- };
-
-
+
+ // private static final int SCA_API = 1;
+ // private static final int TUSCANY_CORE_SPI = 2;
+ // private static final int TUSCANY_RUNTIME = 3;
+ // private static final int TUSCANY_EXTENSIONS = 4;
+ // private static final int TUSCANY_DEPENDENCIES = 0;
+
+ private static final String[] scaApiJars = {"sca-api"};
+ private static final String[] tuscanyCoreSpiJars =
+ {"core-spi", "interface", "interface-java", "interface-wsdl",
"assembly", "policy", "databinding",
+ "contribution", "definitions"};
+ private static final String[] tuscanyRuntimeJars =
+ {
+
+ "binding-sca-xml", "binding-sca", "assembly-java-dsl", "assembly-xml",
"assembly-xsd", "contribution-impl",
+ "contribution-java", "contribution-namespace", "core-databinding",
"core-spring", "core", "definitions-xml",
+ "domain-api", "domain-impl", "domain", "extension-helper",
"host-embedded", "interface-java-xml",
+ "interface-wsdl-xml", "java2wsdl", "node-api", "node-impl", "node",
"osgi-runtime", "policy-logging",
+ "policy-security", "policy-transaction", "policy-xml", "wsdl2java"};
+ private static final String[] tuscanyExtensionJars =
+ {"binding-dwr", "binding-ejb", "binding-feed", "binding-http",
"binding-jms", "binding-jsonrpc",
+ "binding-notification", "binding-rmi", "binding-sca-axis2",
"binding-ws-axis2", "binding-ws-xml",
+ "binding-ws", "databinding-axiom", "databinding-fastinfoset",
"databinding-jaxb", "databinding-json",
+ "databinding-saxon", "databinding-sdo-axiom", "databinding-sdo",
"databinding-xmlbeans", "host-http",
+ "host-jetty", "host-rmi", "host-tomcat", "host-webapp",
"implementation-das.jar", "implementation-data.jar",
+ "implementation-java-runtime", "implementation-java-xml",
"implementation-java",
+ "implementation-node-runtime", "implementation-node-xml",
"implementation-node",
+ "implementation-notification", "implementation-osgi",
"implementation-resource", "implementation-script",
+ "implementation-spring", "implementation-xquery",
"contribution-osgi"};
+
private Class<?> embeddedDomainClass;
Object domain;
-
+
@Before
public void setUp() throws Exception {
-
+
embeddedDomainClass = getEmbeddedDomainClass();
- Constructor c = embeddedDomainClass.getConstructor(ClassLoader.class,
String.class);
- // Create an embedded domain
- domain = c.newInstance(embeddedDomainClass.getClassLoader(),
"http://localhost");
-
- // Start the domain
- invokeNoArgsMethod(domain, "start");
-
-
+ Constructor c = embeddedDomainClass.getConstructor(ClassLoader.class,
String.class);
+ // Create an embedded domain
+ domain = c.newInstance(embeddedDomainClass.getClassLoader(),
"http://localhost");
+
+ // Start the domain
+ invokeNoArgsMethod(domain, "start");
+
}
-
- @After
+ @After
public void tearDown() throws Exception {
-
- // Stop the domain
- invokeNoArgsMethod(domain, "stop");
+ // Stop the domain
+ invokeNoArgsMethod(domain, "stop");
- }
+ }
+ /**
+ * Create a classloader hierarchy for Tuscany runtime
+ * Dependencies <- SCA-API <- Core-SPI+ Runtime <- Extensions
+ * Load the embedded SCA domain class using the runtime classloader
+ *
+ * @return embedded SCA domain class
+ * @throws Exception
+ */
+ private Class<?> getEmbeddedDomainClass() throws Exception {
- /**
- * Create a classloader hierarchy for Tuscany runtime
- * Dependencies <- SCA-API <- Core-SPI+ Runtime <- Extensions
- * Load the embedded SCA domain class using the runtime classloader
- *
- * @return embedded SCA domain class
- * @throws Exception
- */
- private Class<?> getEmbeddedDomainClass()
- throws Exception {
-
- URL[] scaApiUrls;
- URL[] runtimeUrls;
- URL[] extensionUrls;
- URL[] dependencyUrls;
-
- // When the test is run under Eclipse, the classloader for the
test is
- // sun.misc.Launcher$AppClassLoader. The first code path is
taken.
- // When the test is run under maven, the classloader for the
test is
- // org.apache.maven.surefire.booter.IsolatedClassLoader, which
is a subclass
- // of URLClassLoader. The second code path is taken.
- if (!(this.getClass().getClassLoader() instanceof
URLClassLoader)) {
- String classPath = System.getProperty("java.class.path");
- String[] classPathEntries =
classPath.split(System.getProperty("path.separator"));
- HashSet<String> dependentJars = new HashSet<String>();
- for (int i = 0; i < classPathEntries.length; i++) {
- dependentJars.add(classPathEntries[i]);
+ URL[] scaApiUrls;
+ URL[] runtimeUrls;
+ URL[] extensionUrls;
+ URL[] dependencyUrls;
+
+ // When the test is run under Eclipse, the classloader for the test is
+ // sun.misc.Launcher$AppClassLoader. The first code path is taken.
+ // When the test is run under maven, the classloader for the test is
+ // org.apache.maven.surefire.booter.IsolatedClassLoader, which is a
subclass
+ // of URLClassLoader. The second code path is taken.
+ if (!(this.getClass().getClassLoader() instanceof URLClassLoader)) {
+ String classPath = System.getProperty("java.class.path");
+ String[] classPathEntries =
classPath.split(System.getProperty("path.separator"));
+ HashSet<String> dependentJars = new HashSet<String>();
+ for (int i = 0; i < classPathEntries.length; i++) {
+ dependentJars.add(classPathEntries[i]);
}
-
- scaApiUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars, scaApiJars);
- runtimeUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars,
tuscanyCoreSpiJars, tuscanyRuntimeJars );
- extensionUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars,
tuscanyExtensionJars);
- dependencyUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars);
- }
- else {
- HashSet<URL> dependentJars = new HashSet<URL>();
- URL[] classPathEntries =
((URLClassLoader)this.getClass().getClassLoader()).getURLs();
- for (int i = 0; i < classPathEntries.length; i++) {
- dependentJars.add(classPathEntries[i]);
+
+ scaApiUrls = getTuscanyClassLoaderURLs(classPathEntries,
dependentJars, scaApiJars);
+ runtimeUrls =
+ getTuscanyClassLoaderURLs(classPathEntries, dependentJars,
tuscanyCoreSpiJars, tuscanyRuntimeJars);
+ extensionUrls = getTuscanyClassLoaderURLs(classPathEntries,
dependentJars, tuscanyExtensionJars);
+ dependencyUrls = getTuscanyClassLoaderURLs(classPathEntries,
dependentJars);
+ } else {
+ HashSet<URL> dependentJars = new HashSet<URL>();
+ URL[] classPathEntries =
((URLClassLoader)this.getClass().getClassLoader()).getURLs();
+ for (int i = 0; i < classPathEntries.length; i++) {
+ dependentJars.add(classPathEntries[i]);
}
- scaApiUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars,
scaApiJars);
- runtimeUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars,
tuscanyCoreSpiJars, tuscanyRuntimeJars );
- extensionUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars,
tuscanyExtensionJars);
- dependencyUrls = getTuscanyClassLoaderURLs(
- classPathEntries, dependentJars);
-
- }
-
- boolean useSingleClassLoader =
- (scaApiUrls == null || scaApiUrls.length == 0) ||
- (runtimeUrls == null || runtimeUrls.length == 0) ||
- (extensionUrls == null || extensionUrls.length == 0) ||
- (dependencyUrls == null || dependencyUrls.length == 0);
-
- if (useSingleClassLoader) {
- return EmbeddedSCADomain.class;
- }
- else {
-
- ClassLoader dependencyLoader = new
URLClassLoader(dependencyUrls, null);
- ClassLoader scaApiLoader = new URLClassLoader(scaApiUrls,
dependencyLoader);
- ClassLoader runtimeClassLoader = new
URLClassLoader(runtimeUrls, scaApiLoader);
- ClassLoader extensionClassLoader = new
URLClassLoader(extensionUrls, runtimeClassLoader);
-
- Class<?> serviceDiscoveryClass =
runtimeClassLoader.loadClass(ServiceDiscovery.class.getName());
- Method getInstanceMethod =
serviceDiscoveryClass.getMethod("getInstance");
- Object serviceDiscoveryObj = getInstanceMethod.invoke(null);
- Method registerClassLoaderMethod =
serviceDiscoveryClass.getMethod("registerClassLoader", ClassLoader.class);
- registerClassLoaderMethod.invoke(serviceDiscoveryObj,
extensionClassLoader);
-
-
Thread.currentThread().setContextClassLoader(extensionClassLoader);
-
- return
runtimeClassLoader.loadClass(EmbeddedSCADomain.class.getName());
-
- }
-
- }
-
-
- /**
- * From the list of entries in the test classloader, match
- * Tuscany jars corresponding to a classloader, and return the list
- * of matching entries as URLs.
- * This method is used when the test is run under eclipse, using
CLASSPATH
- * based application classloader.
- *
- * @param classPathEntries List of entries on CLASSPATH
- * @param dependentJars Complete set of jars, remove jars corresponding
to this
- * classloader from the set.
- * @param jars List of Tuscany jars corresponding to this classloader
- * @return Matching URLs for the classloader
- * @throws IOException
- */
- private URL[] getTuscanyClassLoaderURLs(
- String[] classPathEntries,
- HashSet<String> dependentJars,
- String[]... jars)
- throws IOException {
-
- String pathSeparator = System.getProperty("file.separator");
- HashSet<String> classPathEntrySet;
+ scaApiUrls = getTuscanyClassLoaderURLs(classPathEntries,
dependentJars, scaApiJars);
+ runtimeUrls =
+ getTuscanyClassLoaderURLs(classPathEntries, dependentJars,
tuscanyCoreSpiJars, tuscanyRuntimeJars);
+ extensionUrls = getTuscanyClassLoaderURLs(classPathEntries,
dependentJars, tuscanyExtensionJars);
+ dependencyUrls = getTuscanyClassLoaderURLs(classPathEntries,
dependentJars);
+
+ }
+
+ boolean useSingleClassLoader =
+ (scaApiUrls == null || scaApiUrls.length == 0) || (runtimeUrls ==
null || runtimeUrls.length == 0)
+ || (extensionUrls == null || extensionUrls.length == 0)
+ || (dependencyUrls == null || dependencyUrls.length == 0);
+
+ if (useSingleClassLoader) {
+ return EmbeddedSCADomain.class;
+ } else {
+
+ ClassLoader dependencyLoader = new URLClassLoader(dependencyUrls,
null);
+ ClassLoader scaApiLoader = new URLClassLoader(scaApiUrls,
dependencyLoader);
+ ClassLoader runtimeClassLoader = new URLClassLoader(runtimeUrls,
scaApiLoader);
+ ClassLoader extensionClassLoader = new
URLClassLoader(extensionUrls, runtimeClassLoader);
+
+ Class<?> serviceDiscoveryClass =
runtimeClassLoader.loadClass(ServiceDiscovery.class.getName());
+ Method getInstanceMethod =
serviceDiscoveryClass.getMethod("getInstance");
+ Object serviceDiscoveryObj = getInstanceMethod.invoke(null);
+ Method registerClassLoaderMethod =
+ serviceDiscoveryClass.getMethod("registerClassLoader",
ClassLoader.class);
+ registerClassLoaderMethod.invoke(serviceDiscoveryObj,
extensionClassLoader);
+
+ Thread.currentThread().setContextClassLoader(extensionClassLoader);
+
+ return
runtimeClassLoader.loadClass(EmbeddedSCADomain.class.getName());
+
+ }
+
+ }
+
+ /**
+ * From the list of entries in the test classloader, match
+ * Tuscany jars corresponding to a classloader, and return the list
+ * of matching entries as URLs.
+ * This method is used when the test is run under eclipse, using CLASSPATH
+ * based application classloader.
+ *
+ * @param classPathEntries List of entries on CLASSPATH
+ * @param dependentJars Complete set of jars, remove jars corresponding to
this
+ * classloader from the set.
+ * @param jars List of Tuscany jars corresponding to this classloader
+ * @return Matching URLs for the classloader
+ * @throws IOException
+ */
+ private URL[] getTuscanyClassLoaderURLs(String[] classPathEntries,
HashSet<String> dependentJars, String[]... jars)
+ throws IOException {
+
+ String pathSeparator = System.getProperty("file.separator");
+ HashSet<String> classPathEntrySet;
if (jars.length == 0)
- classPathEntrySet = dependentJars;
+ classPathEntrySet = dependentJars;
else {
- classPathEntrySet = new HashSet<String>();
-
- for (int i = 0; i < classPathEntries.length; i++) {
-
- String classPathEntry = classPathEntries[i];
- for (int j = 0; j < jars.length; j++) {
- String[] jarList = jars[j];
- if (jarList != null) {
- for (int k = 0; k < jarList.length; k++) {
- String jarName = "tuscany-" +
jarList[k];
- String alternateJarName = "modules" +
pathSeparator + jarList[k];
- if (classPathEntry.indexOf(jarName) >=
0 ||
-
classPathEntry.indexOf(alternateJarName) >=0) {
-
classPathEntrySet.add(classPathEntry);
-
dependentJars.remove(classPathEntry);
- }
- }
- }
- }
- }
-
+ classPathEntrySet = new HashSet<String>();
+
+ for (int i = 0; i < classPathEntries.length; i++) {
+
+ String classPathEntry = classPathEntries[i];
+ for (int j = 0; j < jars.length; j++) {
+ String[] jarList = jars[j];
+ if (jarList != null) {
+ for (int k = 0; k < jarList.length; k++) {
+ String jarName = "tuscany-" + jarList[k];
+ String alternateJarName = "modules" +
pathSeparator + jarList[k];
+ if (classPathEntry.indexOf(jarName) >= 0 ||
classPathEntry.indexOf(alternateJarName) >= 0) {
+ classPathEntrySet.add(classPathEntry);
+ dependentJars.remove(classPathEntry);
+ }
+ }
+ }
+ }
+ }
+
}
ArrayList<URL> urls = new ArrayList<URL>();
-
+
for (String fileName : classPathEntrySet) {
- File file = new File((String)fileName);
- if (!file.exists()) {
- throw new FileNotFoundException(fileName);
+ File file = new File((String)fileName);
+ if (!file.exists()) {
+ throw new FileNotFoundException(fileName);
+
+ } else {
+ urls.add(file.toURL());
}
- else {
- urls.add(file.toURL());
-
- }
}
- return (URL [])urls.toArray(new URL[urls.size()]);
- }
-
- /**
- * From the list of URLs of the test classloader, match
- * Tuscany jars corresponding to a classloader, and return the matching
URLs
- * This method is used when the test is run under maven. The test
classloader is
- * org.apache.maven.surefire.booter.IsolatedClassLoader, which is a
subclass
- * of URLClassLoader
- *
- * @param classPathEntries List of URLs from the test classloader
- * @param dependentJars Complete set of jars, remove jars corresponding
to this
- * classloader from the set.
- * @param jars List of Tuscany jars corresponding to this classloader
- * @return Matching URLs for the classloader
- * @throws IOException
- */
- private URL[] getTuscanyClassLoaderURLs(
- URL[] classPathEntries,
- HashSet<URL> dependentJars,
- String[]... jars)
- throws IOException {
-
- String pathSeparator = System.getProperty("file.separator");
- HashSet<URL> classPathEntrySet;
+ return (URL[])urls.toArray(new URL[urls.size()]);
+ }
+
+ /**
+ * From the list of URLs of the test classloader, match
+ * Tuscany jars corresponding to a classloader, and return the matching
URLs
+ * This method is used when the test is run under maven. The test
classloader is
+ * org.apache.maven.surefire.booter.IsolatedClassLoader, which is a
subclass
+ * of URLClassLoader
+ *
+ * @param classPathEntries List of URLs from the test classloader
+ * @param dependentJars Complete set of jars, remove jars corresponding to
this
+ * classloader from the set.
+ * @param jars List of Tuscany jars corresponding to this classloader
+ * @return Matching URLs for the classloader
+ * @throws IOException
+ */
+ private URL[] getTuscanyClassLoaderURLs(URL[] classPathEntries,
HashSet<URL> dependentJars, String[]... jars)
+ throws IOException {
+
+ String pathSeparator = System.getProperty("file.separator");
+ HashSet<URL> classPathEntrySet;
if (jars.length == 0)
- classPathEntrySet = dependentJars;
+ classPathEntrySet = dependentJars;
else {
- classPathEntrySet = new HashSet<URL>();
-
- for (int i = 0; i < classPathEntries.length; i++) {
-
- URL classPathEntry = classPathEntries[i];
- String classPathEntryStr = classPathEntry.getPath();
- for (int j = 0; j < jars.length; j++) {
- String[] jarList = jars[j];
- if (jarList != null) {
- for (int k = 0; k < jarList.length; k++) {
- String jarName = "tuscany-" +
jarList[k];
- String alternateJarName = "modules" +
pathSeparator + jarList[k];
- if (classPathEntryStr.indexOf(jarName)
>= 0 ||
-
classPathEntryStr.indexOf(alternateJarName) >=0) {
-
classPathEntrySet.add(classPathEntry);
-
dependentJars.remove(classPathEntry);
- }
- }
- }
- }
- }
-
+ classPathEntrySet = new HashSet<URL>();
+
+ for (int i = 0; i < classPathEntries.length; i++) {
+
+ URL classPathEntry = classPathEntries[i];
+ String classPathEntryStr = classPathEntry.getPath();
+ for (int j = 0; j < jars.length; j++) {
+ String[] jarList = jars[j];
+ if (jarList != null) {
+ for (int k = 0; k < jarList.length; k++) {
+ String jarName = "tuscany-" + jarList[k];
+ String alternateJarName = "modules" +
pathSeparator + jarList[k];
+ if (classPathEntryStr.indexOf(jarName) >= 0 ||
classPathEntryStr.indexOf(alternateJarName) >= 0) {
+ classPathEntrySet.add(classPathEntry);
+ dependentJars.remove(classPathEntry);
+ }
+ }
+ }
+ }
+ }
+
}
- return (URL [])classPathEntrySet.toArray(new
URL[classPathEntrySet.size()]);
- }
+ return (URL[])classPathEntrySet.toArray(new
URL[classPathEntrySet.size()]);
+ }
+
+ private Object invokeNoArgsMethod(Object obj, String methodName) throws
Exception {
+
+ return obj.getClass().getMethod(methodName).invoke(obj);
+ }
+
+ private Object invokeOneArgMethod(Object obj, String methodName, Class
argType, Object arg) throws Exception {
+
+ return obj.getClass().getMethod(methodName, argType).invoke(obj, arg);
+ }
- private Object invokeNoArgsMethod(Object obj, String methodName)
- throws Exception {
-
- return obj.getClass().getMethod(methodName).invoke(obj);
- }
-
-
- private Object invokeOneArgMethod(Object obj, String methodName,
- Class argType, Object arg) throws Exception {
-
- return obj.getClass().getMethod(methodName,
argType).invoke(obj, arg);
- }
-
/**
*
* Load Tuscany runtime using multiple classloaders, and run supplychain
@@ -402,71 +305,69 @@
*
* @throws Exception
*/
- @SuppressWarnings("unchecked")
- @Test
+ @SuppressWarnings("unchecked")
+ @Test
public void test() throws Exception {
-
- ClassLoader runtimeClassloader =
embeddedDomainClass.getClassLoader();
-
- if (runtimeClassloader == this.getClass().getClassLoader()) {
- System.out.println("Runtime and test loaded using the
same classloader " + runtimeClassloader);
- }
- else {
- System.out.println("Running test using separate Tuscany
classloaders, runtime classloader=" + runtimeClassloader);
- ClassLoader apiClassLoader =
runtimeClassloader.loadClass(ServiceReference.class.getName()).getClassLoader();
- Assert.assertTrue(apiClassLoader != runtimeClassloader);
-
- try {
-
runtimeClassloader.loadClass("org.apache.tuscany.sca.implementation.java.JavaImplementation");
- Assert.fail("Loaded extension class incorrectly
from runtimeClassLoader");
- } catch (ClassNotFoundException e) {
- }
-
-
- }
-
- // Contribute supplychain (as single contribution)
- Object contributionService = invokeNoArgsMethod(domain,
"getContributionService");
- Method contributeMethod =
contributionService.getClass().getMethod("contribute",
- String.class, URL.class, boolean.class);
-
- String folderName = "../contribution-classes/target/classes";
- String supplychainJarName = "CompleteSupplyChain";
- URL supplyChainContribURL = new File(folderName + "/" +
supplychainJarName + ".jar").toURL();
- Object contribution = contributeMethod.invoke(contributionService,
- "SupplyChain", supplyChainContribURL, true);
-
- Object composite = ((List)invokeNoArgsMethod(contribution,
"getDeployables")).get(0);
- Object domainComposite = invokeNoArgsMethod(domain,
"getDomainComposite");
- List includes = (List)invokeNoArgsMethod(domainComposite,
"getIncludes");
- includes.add(composite);
- //Object compositeBuilder = invokeNoArgsMethod(domain,
"getCompositeBuilder");
- Object compositeActivator = invokeNoArgsMethod(domain,
"getCompositeActivator");
-
- Class compositeClass =
embeddedDomainClass.getClassLoader().loadClass(Composite.class.getName());
- invokeOneArgMethod(domain, "buildComposite", compositeClass, composite);
- invokeOneArgMethod(compositeActivator, "activate", compositeClass,
composite);
- invokeOneArgMethod(compositeActivator, "start", compositeClass,
composite);
-
- // Get customer service
- Method getClassLoaderMethod =
contribution.getClass().getMethod("getClassLoader");
- ClassLoader classLoader =
(ClassLoader)getClassLoaderMethod.invoke(contribution);
+
+ ClassLoader runtimeClassloader = embeddedDomainClass.getClassLoader();
+
+ if (runtimeClassloader == this.getClass().getClassLoader()) {
+ System.out.println("Runtime and test loaded using the same
classloader " + runtimeClassloader);
+ } else {
+ System.out
+ .println("Running test using separate Tuscany classloaders,
runtime classloader=" + runtimeClassloader);
+ ClassLoader apiClassLoader =
+
runtimeClassloader.loadClass(ServiceReference.class.getName()).getClassLoader();
+ Assert.assertTrue(apiClassLoader != runtimeClassloader);
+
+ try {
+
runtimeClassloader.loadClass("org.apache.tuscany.sca.implementation.java.JavaImplementation");
+ Assert.fail("Loaded extension class incorrectly from
runtimeClassLoader");
+ } catch (ClassNotFoundException e) {
+ }
+
+ }
+
+ // Contribute supplychain (as single contribution)
+ Object contributionService = invokeNoArgsMethod(domain,
"getContributionService");
+ Method contributeMethod =
+ contributionService.getClass().getMethod("contribute",
String.class, URL.class, boolean.class);
+
+ String folderName = "../contribution-classes/target/classes";
+ String supplychainJarName = "CompleteSupplyChain";
+ URL supplyChainContribURL = new File(folderName + "/" +
supplychainJarName + ".jar").toURL();
+ Object contribution = contributeMethod.invoke(contributionService,
"SupplyChain", supplyChainContribURL, true);
+
+ Object composite = ((List)invokeNoArgsMethod(contribution,
"getDeployables")).get(0);
+ Object domainComposite = invokeNoArgsMethod(domain,
"getDomainComposite");
+ List includes = (List)invokeNoArgsMethod(domainComposite,
"getIncludes");
+ includes.add(composite);
+ //Object compositeBuilder = invokeNoArgsMethod(domain,
"getCompositeBuilder");
+ Object compositeActivator = invokeNoArgsMethod(domain,
"getCompositeActivator");
+
+ Class compositeClass =
embeddedDomainClass.getClassLoader().loadClass(Composite.class.getName());
+ invokeOneArgMethod(domain, "buildComposite", compositeClass,
composite);
+ invokeOneArgMethod(compositeActivator, "activate", compositeClass,
composite);
+ invokeOneArgMethod(compositeActivator, "start", compositeClass,
composite);
+
+ // Get customer service
+ Method getClassLoaderMethod =
contribution.getClass().getMethod("getClassLoader");
+ ClassLoader classLoader =
(ClassLoader)getClassLoaderMethod.invoke(contribution);
Class customerClass =
classLoader.loadClass("supplychain.customer.Customer");
- Method getServiceMethod = embeddedDomainClass.getMethod("getService",
- Class.class, String.class);
+ Method getServiceMethod = embeddedDomainClass.getMethod("getService",
Class.class, String.class);
Object customer = getServiceMethod.invoke(domain, customerClass,
"CustomerComponent");
-
+
// Invoke purchaseGoods
Method m = customerClass.getMethod("purchaseGoods");
- m.invoke(customer);
+ m.invoke(customer);
m = customerClass.getMethod("outstandingOrderCount");
-
+
int retries = 10;
int outstandingCount = 1;
while (retries-- > 0) {
-
+
outstandingCount = (int)(Integer)m.invoke(customer);
if (outstandingCount == 0)
break;
@@ -474,10 +375,7 @@
Thread.sleep(100);
}
Assert.assertEquals(0, outstandingCount);
-
-
+
}
-
-
-
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]