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/04 04:40:52 UTC

svn commit: r452695 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/implementation/composite/ test/java/org/apache/tuscany/core/implementation/composite/

Author: jboynes
Date: Tue Oct  3 19:40:52 2006
New Revision: 452695

URL: http://svn.apache.org/viewvc?view=rev&rev=452695
Log:
support jarLocation for using composites packaged as a jar

Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoader.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoaderTestCase.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoader.java?view=diff&rev=452695&r1=452694&r2=452695
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoader.java Tue Oct  3 19:40:52 2006
@@ -29,6 +29,7 @@
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.CompositeClassLoader;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.InvalidValueException;
@@ -63,6 +64,7 @@
         assert IMPLEMENTATION_COMPOSITE.equals(reader.getName());
         String name = reader.getAttributeValue(null, "name");
         String scdlLocation = reader.getAttributeValue(null, "scdlLocation");
+        String jarLocation = reader.getAttributeValue(null, "jarLocation");
         LoaderUtil.skipToEndElement(reader);
 
         CompositeImplementation impl = new CompositeImplementation();
@@ -75,8 +77,23 @@
                 ive.setIdentifier(name);
                 throw ive;
             }
+            impl.setClassLoader(deploymentContext.getClassLoader());
+        } else if (jarLocation != null) {
+            URL jarUrl;
+            try {
+                jarUrl = new URL(deploymentContext.getScdlLocation(), jarLocation);
+            } catch (MalformedURLException e) {
+                InvalidValueException ive = new InvalidValueException(jarLocation, e);
+                ive.setIdentifier(name);
+                throw ive;
+            }
+            try {
+                impl.setScdlLocation(new URL("jar:" + jarUrl.toExternalForm() + "!/META-INF/sca/default.scdl"));
+            } catch (MalformedURLException e) {
+                throw new AssertionError("Could not convert URL to a jar: url");
+            }
+            impl.setClassLoader(new CompositeClassLoader(new URL[]{jarUrl}, deploymentContext.getClassLoader()));
         }
-        impl.setClassLoader(deploymentContext.getClassLoader());
         return impl;
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoaderTestCase.java?view=diff&rev=452695&r1=452694&r2=452695
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ImplementationCompositeLoaderTestCase.java Tue Oct  3 19:40:52 2006
@@ -53,10 +53,10 @@
         expect(reader.getName()).andReturn(IMPLEMENTATION_COMPOSITE);
         expect(reader.getAttributeValue(null, "name")).andReturn(name);
         expect(reader.getAttributeValue(null, "scdlLocation")).andReturn(null);
+        expect(reader.getAttributeValue(null, "jarLocation")).andReturn(null);
         expect(reader.next()).andReturn(END_ELEMENT);
         replay(reader);
 
-        expect(context.getClassLoader()).andReturn(cl);
         replay(context);
 
         CompositeImplementation impl = loader.load(null, reader, context);
@@ -64,7 +64,7 @@
         verify(context);
         assertEquals(name, impl.getName());
         assertNull(impl.getScdlLocation());
-        assertSame(cl, impl.getClassLoader());
+        assertNull(impl.getClassLoader());
     }
 
     public void testWithScdlLocation() throws LoaderException, XMLStreamException, MalformedURLException {
@@ -72,6 +72,7 @@
         expect(reader.getName()).andReturn(IMPLEMENTATION_COMPOSITE);
         expect(reader.getAttributeValue(null, "name")).andReturn(name);
         expect(reader.getAttributeValue(null, "scdlLocation")).andReturn("bar.scdl");
+        expect(reader.getAttributeValue(null, "jarLocation")).andReturn(null);
         expect(reader.next()).andReturn(END_ELEMENT);
         replay(reader);
 
@@ -85,6 +86,27 @@
         assertEquals(name, impl.getName());
         assertEquals(new URL("http://www.example.com/sca/bar.scdl"), impl.getScdlLocation());
         assertSame(cl, impl.getClassLoader());
+    }
+
+    public void testWithJarLocation() throws LoaderException, XMLStreamException, MalformedURLException {
+        String name = "foo";
+        expect(reader.getName()).andReturn(IMPLEMENTATION_COMPOSITE);
+        expect(reader.getAttributeValue(null, "name")).andReturn(name);
+        expect(reader.getAttributeValue(null, "scdlLocation")).andReturn(null);
+        expect(reader.getAttributeValue(null, "jarLocation")).andReturn("bar.jar");
+        expect(reader.next()).andReturn(END_ELEMENT);
+        replay(reader);
+
+        expect(context.getScdlLocation()).andReturn(new URL("http://www.example.com/sca/base.scdl"));
+        expect(context.getClassLoader()).andReturn(cl);
+        replay(context);
+
+        CompositeImplementation impl = loader.load(null, reader, context);
+        verify(reader);
+        verify(context);
+        assertEquals(name, impl.getName());
+        assertEquals(new URL("jar:http://www.example.com/sca/bar.jar!/META-INF/sca/default.scdl"),
+                     impl.getScdlLocation());
     }
 
     protected void setUp() throws Exception {



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