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