You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2006/10/06 06:26:11 UTC

svn commit: r453493 - in /incubator/tuscany/java: samples/sca/bigbank/src/test/java/bigbank/ samples/sca/calculator-ws/ samples/sca/calculator-ws/src/ samples/sca/calculator-ws/src/main/webapp/WEB-INF/ samples/sca/calculator/src/test/java/calculator/ s...

Author: jboynes
Date: Thu Oct  5 21:26:07 2006
New Revision: 453493

URL: http://svn.apache.org/viewvc?view=rev&rev=453493
Log:
have SCATestCase use an explict URL for the application SCDL location
add a method to find the URL of application SCDL relative to some class from the production classes under test
update the test cases to find the application SCDL relative to a production class

Added:
    incubator/tuscany/java/samples/sca/calculator-ws/
      - copied from r453401, incubator/tuscany/java/samples/sca/webapp/
    incubator/tuscany/java/samples/sca/calculator-ws/LICENSE.txt
      - copied unchanged from r453491, incubator/tuscany/java/samples/sca/webapp/LICENSE.txt
    incubator/tuscany/java/samples/sca/calculator-ws/NOTICE.txt
      - copied unchanged from r453491, incubator/tuscany/java/samples/sca/webapp/NOTICE.txt
    incubator/tuscany/java/samples/sca/calculator-ws/pom.xml
      - copied, changed from r453491, incubator/tuscany/java/samples/sca/webapp/pom.xml
    incubator/tuscany/java/samples/sca/calculator-ws/src/
      - copied from r453491, incubator/tuscany/java/samples/sca/webapp/src/
    incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/default.scdl
      - copied, changed from r453457, incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/extension-default.scdl
    incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java   (with props)
Removed:
    incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/extension-default.scdl
Modified:
    incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java
    incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/default.scdl
    incubator/tuscany/java/samples/sca/calculator/src/test/java/calculator/CalculatorTestCase.java
    incubator/tuscany/java/samples/sca/echo.binding/src/test/java/echo/BootstrapTestCase.java
    incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java
    incubator/tuscany/java/samples/sca/local.wire.cdi/src/test/java/localwire/cdi/LocalWireTestCase.java
    incubator/tuscany/java/samples/sca/local.wire/src/test/java/localwire/LocalWireTestCase.java
    incubator/tuscany/java/samples/sca/supplychain/src/test/java/supplychain/SupplyChainClientTestCase.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/HelloWorldTestCase.java
    incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/ScopeTestCase.java
    incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java

Modified: incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java Thu Oct  5 21:26:07 2006
@@ -29,6 +29,7 @@
     AccountService accountService;
 
     protected void setUp() throws Exception {
+        setApplicationSCDL(AccountService.class, "META-INF/sca/default.scdl");
         super.setUp();
 
         CompositeContext context = CurrentCompositeContext.getContext();

Copied: incubator/tuscany/java/samples/sca/calculator-ws/pom.xml (from r453491, incubator/tuscany/java/samples/sca/webapp/pom.xml)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/calculator-ws/pom.xml?view=diff&rev=453493&p1=incubator/tuscany/java/samples/sca/webapp/pom.xml&r1=453491&p2=incubator/tuscany/java/samples/sca/calculator-ws/pom.xml&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/webapp/pom.xml (original)
+++ incubator/tuscany/java/samples/sca/calculator-ws/pom.xml Thu Oct  5 21:26:07 2006
@@ -24,7 +24,7 @@
         <version>1.0-incubator-M2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>sample-webapp</artifactId>
+    <artifactId>sample-calculator-ws</artifactId>
     <packaging>war</packaging>
     <name>Apache Tuscany Simple WebApp Sample</name>
     <description>A sample WebApplication showing how to include a Tuscany runtime.</description>
@@ -43,7 +43,7 @@
         </dependency>
     </dependencies>
     <build>
-        <finalName>webapp</finalName>
+        <finalName>calculator</finalName>
         <plugins>
             <plugin>
                 <groupId>org.apache.tuscany.sca.plugins</groupId>
@@ -56,6 +56,15 @@
                         </goals>
                     </execution>
                 </executions>
+                <configuration>
+                    <extensions>
+                        <dependency>
+                            <groupId>org.apache.tuscany.sca.services.idl</groupId>
+                            <artifactId>wsdl</artifactId>
+                            <version>${tuscanyVersion}</version>
+                        </dependency>
+                    </extensions>
+                </configuration>
             </plugin>
         </plugins>
     </build>

Added: incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl?view=auto&rev=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl (added)
+++ incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl Thu Oct  5 21:26:07 2006
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<wsdl:definitions targetNamespace="http://example.com/Calculator"
+                  xmlns:tns="http://example.com/Calculator"
+                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+                  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+                  name="calculator">
+
+    <wsdl:types>
+        <schema xmlns="http://www.w3.org/2001/XMLSchema"
+                targetNamespace="http://example.com/Calculator"
+                elementFormDefault="qualified">
+
+            <element name="value" type="double"/>
+
+            <element name="valuePair">
+                <complexType>
+                    <sequence>
+                        <element name="first" type="double"/>
+                        <element name="second" type="double"/>
+                    </sequence>
+                </complexType>
+            </element>
+        </schema>
+    </wsdl:types>
+
+    <wsdl:message name="request">
+        <wsdl:part element="tns:valuePair" name="parameters"/>
+    </wsdl:message>
+    <wsdl:message name="response">
+        <wsdl:part element="tns:value" name="parameters"/>
+    </wsdl:message>
+
+    <wsdl:portType name="CalculatorService">
+        <wsdl:operation name="add">
+            <wsdl:input message="tns:request"/>
+            <wsdl:output message="tns:response"/>
+        </wsdl:operation>
+    </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file

Propchange: incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/calculator.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/default.scdl?view=diff&rev=453493&r1=453491&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/default.scdl (original)
+++ incubator/tuscany/java/samples/sca/calculator-ws/src/main/webapp/WEB-INF/default.scdl Thu Oct  5 21:26:07 2006
@@ -18,9 +18,18 @@
  * under the License.    
 -->
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance"
            name="CalculatorComposite">
 
+    <service name="Calculator">
+        <interface.wsdl interface="http://example.com/Calculator#wsdl.interface(CalculatorService)"
+                        wsdli:wsdlLocation="http://example.com/Calculator calculator.wsdl"/>
+        <reference>CalculatorServiceComponent</reference>
+        <binding.ws endpoint=""
+                    wsdli:wsdlLocation="http://example.com/Calculator calculator.wsdl"/>
+    </service>
+
     <component name="CalculatorServiceComponent">
-		<implementation.composite name="CalculatorComposite" jarLocation="lib/sample-calculator-1.0-incubator-M2-SNAPSHOT.jar"/>
+        <implementation.composite name="CalculatorComposite" jarLocation="lib/sample-calculator-1.0-incubator-M2-SNAPSHOT.jar"/>
     </component>
 </composite>

Modified: incubator/tuscany/java/samples/sca/calculator/src/test/java/calculator/CalculatorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/calculator/src/test/java/calculator/CalculatorTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/calculator/src/test/java/calculator/CalculatorTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/calculator/src/test/java/calculator/CalculatorTestCase.java Thu Oct  5 21:26:07 2006
@@ -31,6 +31,7 @@
     private CalculatorService calculatorService;
 
     protected void setUp() throws Exception {
+        setApplicationSCDL(CalculatorService.class, "META-INF/sca/default.scdl");
         super.setUp();
 
         CompositeContext context = CurrentCompositeContext.getContext();

Modified: incubator/tuscany/java/samples/sca/echo.binding/src/test/java/echo/BootstrapTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.binding/src/test/java/echo/BootstrapTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/echo.binding/src/test/java/echo/BootstrapTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/echo.binding/src/test/java/echo/BootstrapTestCase.java Thu Oct  5 21:26:07 2006
@@ -37,6 +37,7 @@
     }
 
     protected void setUp() throws Exception {
+        setApplicationSCDL(Client.class, "META-INF/sca/default.scdl");
         addExtension("echo.binding", getClass().getClassLoader().getResource("META-INF/sca/echo.system.scdl"));
         super.setUp();
         CompositeContext context = CurrentCompositeContext.getContext();

Modified: incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java Thu Oct  5 21:26:07 2006
@@ -36,6 +36,7 @@
     }
 
     protected void setUp() throws Exception {
+        setApplicationSCDL(getClass(), "META-INF/sca/default.scdl");
         addExtension("echo.binding", getClass().getClassLoader().getResource("META-INF/sca/echo.system.scdl"));
         addExtension("idl.wsdl", getClass().getClassLoader().getResource("META-INF/tuscany/test-interface-wsdl.scdl"));
         addExtension("databinding.axiom", getClass().getClassLoader().getResource("META-INF/tuscany/test-databinding-axiom.scdl"));

Modified: incubator/tuscany/java/samples/sca/local.wire.cdi/src/test/java/localwire/cdi/LocalWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/local.wire.cdi/src/test/java/localwire/cdi/LocalWireTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/local.wire.cdi/src/test/java/localwire/cdi/LocalWireTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/local.wire.cdi/src/test/java/localwire/cdi/LocalWireTestCase.java Thu Oct  5 21:26:07 2006
@@ -35,4 +35,9 @@
         assertNotNull(source);
         assertEquals("Echoing: Ciao", source.invoke("Ciao"));
     }
+
+    protected void setUp() throws Exception {
+        setApplicationSCDL(LocalWireClient.class, "META-INF/sca/default.scdl");
+        super.setUp();
+    }
 }

Modified: incubator/tuscany/java/samples/sca/local.wire/src/test/java/localwire/LocalWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/local.wire/src/test/java/localwire/LocalWireTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/local.wire/src/test/java/localwire/LocalWireTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/local.wire/src/test/java/localwire/LocalWireTestCase.java Thu Oct  5 21:26:07 2006
@@ -35,4 +35,9 @@
         assertNotNull(source);
         assertEquals("Echoing: Ciao", source.invoke("Ciao"));
     }
+
+    protected void setUp() throws Exception {
+        setApplicationSCDL(LocalWireClient.class, "META-INF/sca/default.scdl");
+        super.setUp();
+    }
 }

Modified: incubator/tuscany/java/samples/sca/supplychain/src/test/java/supplychain/SupplyChainClientTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/supplychain/src/test/java/supplychain/SupplyChainClientTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/samples/sca/supplychain/src/test/java/supplychain/SupplyChainClientTestCase.java (original)
+++ incubator/tuscany/java/samples/sca/supplychain/src/test/java/supplychain/SupplyChainClientTestCase.java Thu Oct  5 21:26:07 2006
@@ -32,6 +32,7 @@
     private Customer customer;
 
     protected void setUp() throws Exception {
+        setApplicationSCDL(SupplyChainClient.class, "META-INF/sca/default.scdl");
         super.setUp();
 
         CompositeContext context = CurrentCompositeContext.getContext();

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/HelloWorldTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/HelloWorldTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/HelloWorldTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/HelloWorldTestCase.java Thu Oct  5 21:26:07 2006
@@ -43,7 +43,7 @@
     protected void setUp() throws Exception {
         URL base = getClass().getResource("/META-INF/sca/js.system.scdl");
         addExtension("JavaScriptContainer", new URL(base, "default.scdl"));
-        setApplicationSCDL("org/apache/tuscany/container/javascript/function/helloworld.scdl");
+        setApplicationSCDL(getClass().getResource("helloworld.scdl"));
         super.setUp();
 
         context = CurrentCompositeContext.getContext();

Modified: incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/ScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/ScopeTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/ScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/function/ScopeTestCase.java Thu Oct  5 21:26:07 2006
@@ -36,7 +36,7 @@
     protected void setUp() throws Exception {
         URL base = getClass().getResource("/META-INF/sca/js.system.scdl");
         addExtension("JavaScriptContainer", new URL(base, "default.scdl"));
-        setApplicationSCDL("org/apache/tuscany/container/javascript/function/scopeTest.scdl");
+        setApplicationSCDL(getClass().getResource("scopeTest.scdl"));
         super.setUp();
 
         context = CurrentCompositeContext.getContext();

Modified: incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java (original)
+++ incubator/tuscany/java/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java Thu Oct  5 21:26:07 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.container.ruby.function;
 
+import java.net.URL;
+
 import helloworld.HelloWorldService;
 
 import org.apache.tuscany.test.SCATestCase;
@@ -36,8 +38,9 @@
     private HelloWorldService e4xHelloWorldService;
 
     protected void setUp() throws Exception {
-        addExtension("JavaScriptContainer", getClass().getClassLoader().getResource("META-INF/sca/default.scdl"));
-        setApplicationSCDL("org/apache/tuscany/container/ruby/function/helloworld.scdl");
+        URL base = getClass().getResource("/org/apache/tuscany/container/ruby/RubyComponent.class");
+        addExtension("RubyContainer", new URL(base, "../../../../../META-INF/sca/default.scdl"));
+        setApplicationSCDL(getClass().getResource("helloworld.scdl"));
         super.setUp();
 
         CompositeContext context = CurrentCompositeContext.getContext();

Copied: incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/default.scdl (from r453457, incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/extension-default.scdl)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/default.scdl?view=diff&rev=453493&p1=incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/extension-default.scdl&r1=453457&p2=incubator/tuscany/java/sca/services/databinding/databinding-axiom/src/main/resources/META-INF/sca/default.scdl&r2=453493
==============================================================================
    (empty)

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?view=diff&rev=453493&r1=453492&r2=453493
==============================================================================
--- 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 Thu Oct  5 21:26:07 2006
@@ -18,33 +18,34 @@
  */
 package org.apache.tuscany.test;
 
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.HashMap;
 import java.util.Map;
 
-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;
-
 import junit.framework.TestCase;
+
 import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 import org.apache.tuscany.core.launcher.CompositeContextImpl;
 import org.apache.tuscany.core.launcher.LauncherImpl;
 import org.apache.tuscany.core.monitor.NullMonitorFactory;
+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.
  *
  * @version $Rev$ $Date$
  */
-public class SCATestCase extends TestCase {
+public abstract class SCATestCase extends TestCase {
     protected CompositeComponent component;
     private CompositeContextImpl context;
     private Map<String, URL> extensions = new HashMap<String, URL>();
-    private String applicationSCDL = LauncherImpl.METAINF_APPLICATION_SCDL_PATH;
+    private URL applicationSCDL;
 
     protected void setUp() throws Exception {
         super.setUp();
@@ -52,17 +53,16 @@
         LauncherImpl launcher = new LauncherImpl();
         launcher.setApplicationLoader(cl);
         CompositeComponent composite = launcher.bootRuntime(cl.getResource(LauncherImpl.METAINF_SYSTEM_SCDL_PATH),
-            new NullMonitorFactory());
+                                                            new NullMonitorFactory());
 
         for (String extensionName : extensions.keySet()) {
             deployExtension(composite, extensionName, extensions.get(extensionName));
         }
 
-        URL applicationScdlURL = cl.getResource(applicationSCDL);
-        if (applicationScdlURL == null) {
+        if (applicationSCDL == null) {
             throw new RuntimeException("application SCDL not found: " + applicationSCDL);
         }
-        component = launcher.bootApplication("application", applicationScdlURL);
+        component = launcher.bootApplication("application", applicationSCDL);
         component.start();
         context = new CompositeContextImpl(component);
         context.start();
@@ -71,11 +71,24 @@
     /**
      * A TestCase can use this to overide the default SCDL location of "META-INF/sca/default.scdl"
      */
-    protected void setApplicationSCDL(String applicationSCDL) {
+    protected void setApplicationSCDL(URL applicationSCDL) {
         this.applicationSCDL = applicationSCDL;
     }
 
     /**
+     * Set the application scdl based on the classpath entry for a class.
+     * Normally this will be a class in the production code associated with this test case.
+     *
+     * @param aClass a Class from which to determine the resource base url
+     * @param path   location of the application SCDL relative to the base class
+     * @throws MalformedURLException if the path is malformed
+     */
+    protected void setApplicationSCDL(Class<?> aClass, String path) throws MalformedURLException {
+        URL root = getRoot(aClass);
+        setApplicationSCDL(new URL(root, path));
+    }
+
+    /**
      * 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) {
@@ -89,13 +102,31 @@
         implementation.setClassLoader(new URLClassLoader(new URL[]{scdlURL}, getClass().getClassLoader()));
 
         ComponentDefinition<SystemCompositeImplementation> definition =
-            new ComponentDefinition<SystemCompositeImplementation>(extensionName,
-                implementation);
+            new ComponentDefinition<SystemCompositeImplementation>(extensionName, implementation);
 
         Deployer deployer = (Deployer) composite.getSystemChild("deployer").getServiceInstance();
         Component component = deployer.deploy(composite, definition);
 
         component.start();
+    }
+
+
+    protected static URL getRoot(Class<?> aClass) {
+        String name = aClass.getName();
+        String classPath = "/" + name.replace('.', '/') + ".class";
+        URL classURL = aClass.getResource(classPath);
+        assert classURL != null;
+        StringBuilder prefix = new StringBuilder();
+        for (int i = 0; i < name.length(); i++) {
+            if (name.charAt(i) == '.') {
+                prefix.append("../");
+            }
+        }
+        try {
+            return new URL(classURL, prefix.toString());
+        } catch (MalformedURLException e) {
+            throw new AssertionError();
+        }
     }
 
     protected void tearDown() throws Exception {

Added: incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java?view=auto&rev=453493
==============================================================================
--- incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java (added)
+++ incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java Thu Oct  5 21:26:07 2006
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.test;
+
+import java.net.URL;
+import java.net.MalformedURLException;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SCATestCaseTestCase extends TestCase {
+    public void testGetRoot() throws MalformedURLException {
+        URL classUrl = getClass().getResource("SCATestCaseTestCase.class");
+        URL root = SCATestCase.getRoot(getClass());
+        assertEquals(classUrl, new URL(root, "org/apache/tuscany/test/SCATestCaseTestCase.class"));
+    }
+}

Propchange: incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/test/src/test/java/org/apache/tuscany/test/SCATestCaseTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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