You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/08/01 12:21:45 UTC

svn commit: r427514 - /incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java

Author: antelder
Date: Tue Aug  1 03:21:43 2006
New Revision: 427514

URL: http://svn.apache.org/viewvc?rev=427514&view=rev
Log:
Add support for testcases customizing the SCA runtime environment for the testcase by add extensions and to change the default location of the application SCDL 

Modified:
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java

Modified: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java?rev=427514&r1=427513&r2=427514&view=diff
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java (original)
+++ incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java Tue Aug  1 03:21:43 2006
@@ -16,11 +16,21 @@
  */
 package org.apache.tuscany.test;
 
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.HashMap;
+import java.util.Map;
+
 import junit.framework.TestCase;
 
-import org.apache.tuscany.core.launcher.Launcher;
+import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 import org.apache.tuscany.core.launcher.CompositeContextImpl;
+import org.apache.tuscany.core.launcher.Launcher;
+import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.Deployer;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.model.ComponentDefinition;
 
 /**
  * Base class for JUnit tests that want to run in an SCA client environment.
@@ -31,17 +41,57 @@
     private Launcher launcher;
     private CompositeComponent<?> component;
     private CompositeContextImpl context;
+    private Map<String, URL> extensions = new HashMap<String, URL>();
+    private String applicationSCDL = Launcher.METAINF_APPLICATION_SCDL_PATH;
 
     protected void setUp() throws Exception {
         super.setUp();
         ClassLoader cl = getClass().getClassLoader();
         launcher = new Launcher();
         launcher.setApplicationLoader(cl);
-        launcher.bootRuntime(cl.getResource(Launcher.METAINF_SYSTEM_SCDL_PATH));
-        component = launcher.bootApplication(cl.getResource(Launcher.METAINF_APPLICATION_SCDL_PATH));
+        CompositeComponent<?> composite = launcher.bootRuntime(cl.getResource(Launcher.METAINF_SYSTEM_SCDL_PATH));
+
+        for (String extensionName : extensions.keySet()) {
+            deployExtension(composite, extensionName, extensions.get(extensionName));
+        }
+        
+        URL applicationScdlURL = cl.getResource(applicationSCDL);
+        if (applicationScdlURL == null) {
+            throw new RuntimeException("application SCDL not found: " + applicationSCDL);
+        }
+        component = launcher.bootApplication(applicationScdlURL);
         component.start();
         context = new CompositeContextImpl(component);
         context.start();
+    }
+
+    /**
+     * A TestCase can use this to overide the default SCDL location of "META-INF/sca/default.scdl"
+     */
+    protected void setApplicationSCDL(String applicationSCDL) {
+        this.applicationSCDL = applicationSCDL;
+    }
+
+    /**
+     * A TestCase can use this to add the SCDL location of an extention to be deployed to the runtime
+     */
+    protected void addExtension(String extensionName, URL extentionSCDL) {
+        extensions.put(extensionName, extentionSCDL);
+    }
+
+    @SuppressWarnings("unchecked")
+    protected void deployExtension(CompositeComponent<?> composite, String extensionName, URL scdlURL) throws LoaderException {
+        SystemCompositeImplementation implementation = new SystemCompositeImplementation();
+        implementation.setScdlLocation(scdlURL);
+        implementation.setClassLoader(new URLClassLoader(new URL[] { scdlURL }, getClass().getClassLoader()));
+
+        ComponentDefinition<SystemCompositeImplementation> definition = new ComponentDefinition<SystemCompositeImplementation>(extensionName,
+                implementation);
+
+        Deployer deployer = (Deployer) composite.getChild("deployer").getServiceInstance();
+        Component<?> component = deployer.deploy(composite, definition);
+
+        component.start();
     }
 
     protected void tearDown() throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org