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/09/06 19:48:14 UTC
svn commit: r440806 - in /incubator/tuscany/java/sca/kernel:
core/src/main/java/org/apache/tuscany/core/loader/
core/src/test/java/org/apache/tuscany/core/loader/
core/src/test/resources/org/apache/tuscany/core/loader/
spi/src/main/java/org/apache/tusc...
Author: jboynes
Date: Wed Sep 6 10:48:13 2006
New Revision: 440806
URL: http://svn.apache.org/viewvc?view=rev&rev=440806
Log:
support scdlResource for <include>
Added:
incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/
incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl (with props)
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.java (with props)
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/IncludeLoader.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/IncludeLoaderTestCase.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/IncludeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/IncludeLoader.java?view=diff&rev=440806&r1=440805&r2=440806
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/IncludeLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/IncludeLoader.java Wed Sep 6 10:48:13 2006
@@ -34,6 +34,7 @@
import org.apache.tuscany.spi.loader.LoaderUtil;
import org.apache.tuscany.spi.loader.LoaderRegistry;
import org.apache.tuscany.spi.loader.MissingResourceException;
+import org.apache.tuscany.spi.loader.MissingIncludeException;
import org.apache.tuscany.spi.model.Include;
import org.apache.tuscany.spi.model.CompositeComponentType;
import org.apache.tuscany.spi.annotation.Autowire;
@@ -62,26 +63,39 @@
assert INCLUDE.equals(reader.getName());
String name = reader.getAttributeValue(null, "name");
String scdlLocation = reader.getAttributeValue(null, "scdlLocation");
+ String scdlResource = reader.getAttributeValue(null, "scdlResource");
+ LoaderUtil.skipToEndElement(reader);
- Include include = new Include();
- include.setName(name);
+ ClassLoader cl = deploymentContext.getClassLoader();
+ URL url;
if (scdlLocation != null) {
try {
- include.setScdlLocation(new URL(deploymentContext.getScdlLocation(), scdlLocation));
+ url = new URL(deploymentContext.getScdlLocation(), scdlLocation);
} catch (MalformedURLException e) {
MissingResourceException mre = new MissingResourceException(scdlLocation, e);
mre.setIdentifier(name);
throw mre;
}
- URL location = include.getScdlLocation();
- DeploymentContext childContext = new ChildDeploymentContext(deploymentContext,
- deploymentContext.getClassLoader(),
- location);
- CompositeComponentType composite = loadFromSidefile(parent, location, childContext);
- include.setIncluded(composite);
+ } else if (scdlResource != null) {
+ url = cl.getResource(scdlResource);
+ if (url == null) {
+ MissingResourceException mre = new MissingResourceException(scdlResource);
+ mre.setIdentifier(name);
+ throw mre;
+ }
+ } else {
+ MissingIncludeException mie = new MissingIncludeException();
+ mie.setIdentifier(name);
+ throw mie;
}
- LoaderUtil.skipToEndElement(reader);
+ DeploymentContext childContext = new ChildDeploymentContext(deploymentContext, cl, url);
+ CompositeComponentType composite = loadFromSidefile(parent, url, childContext);
+
+ Include include = new Include();
+ include.setName(name);
+ include.setScdlLocation(url);
+ include.setIncluded(composite);
return include;
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/IncludeLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/IncludeLoaderTestCase.java?view=diff&rev=440806&r1=440805&r2=440806
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/IncludeLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/IncludeLoaderTestCase.java Wed Sep 6 10:48:13 2006
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.core.loader;
+import java.net.URL;
import javax.xml.namespace.QName;
import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
import javax.xml.stream.XMLStreamException;
@@ -25,12 +26,20 @@
import junit.framework.TestCase;
import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.isNull;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import org.osoa.sca.Version;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.loader.MissingIncludeException;
+import org.apache.tuscany.spi.model.CompositeComponentType;
import org.apache.tuscany.spi.model.Include;
/**
@@ -39,25 +48,117 @@
public class IncludeLoaderTestCase extends TestCase {
private static final QName INCLUDE = new QName(Version.XML_NAMESPACE_1_0, "include");
+ private LoaderRegistry registry;
private IncludeLoader loader;
private XMLStreamReader reader;
+ private DeploymentContext context;
+ private URL base;
+ private URL includeURL;
+ private ClassLoader cl;
- public void testName() throws LoaderException, XMLStreamException {
+ public void testNoLocation() throws LoaderException, XMLStreamException {
String name = "foo";
expect(reader.getName()).andReturn(INCLUDE);
expect(reader.getAttributeValue(null, "name")).andReturn(name);
expect(reader.getAttributeValue(null, "scdlLocation")).andReturn(null);
+ expect(reader.getAttributeValue(null, "scdlResource")).andReturn(null);
expect(reader.next()).andReturn(END_ELEMENT);
- replay(reader);
- Include include = loader.load(null, reader, null);
+ expect(context.getClassLoader()).andReturn(cl);
+ replay(registry, reader, context);
+
+ try {
+ loader.load(null, reader, context);
+ fail();
+ } catch (MissingIncludeException e) {
+ // OK expected
+ }
+ verify(registry, reader, context);
+ }
+
+ public void testWithAbsoluteScdlLocation() throws LoaderException, XMLStreamException {
+ String name = "foo";
+ expect(reader.getName()).andReturn(INCLUDE);
+ expect(reader.getAttributeValue(null, "name")).andReturn(name);
+ expect(reader.getAttributeValue(null, "scdlLocation")).andReturn("http://example.com/include.scdl");
+ expect(reader.getAttributeValue(null, "scdlResource")).andReturn(null);
+ expect(reader.next()).andReturn(END_ELEMENT);
+
+ expect(context.getScdlLocation()).andReturn(base);
+ expect(context.getClassLoader()).andReturn(cl);
+
+ expect(registry.load((CompositeComponent) isNull(),
+ eq(includeURL),
+ eq(CompositeComponentType.class),
+ isA(DeploymentContext.class)))
+ .andReturn(null);
+ replay(registry, reader, context);
+
+ Include include = loader.load(null, reader, context);
+ assertEquals(name, include.getName());
+ assertEquals(includeURL, include.getScdlLocation());
+ verify(registry, reader, context);
+ }
+
+ public void testWithRelativeScdlLocation() throws LoaderException, XMLStreamException {
+ String name = "foo";
+ expect(reader.getName()).andReturn(INCLUDE);
+ expect(reader.getAttributeValue(null, "name")).andReturn(name);
+ expect(reader.getAttributeValue(null, "scdlLocation")).andReturn("include.scdl");
+ expect(reader.getAttributeValue(null, "scdlResource")).andReturn(null);
+ expect(reader.next()).andReturn(END_ELEMENT);
+
+ expect(context.getScdlLocation()).andReturn(base);
+ expect(context.getClassLoader()).andReturn(cl);
+
+ expect(registry.load((CompositeComponent) isNull(),
+ eq(includeURL),
+ eq(CompositeComponentType.class),
+ isA(DeploymentContext.class)))
+ .andReturn(null);
+ replay(registry, reader, context);
+
+ Include include = loader.load(null, reader, context);
+ assertEquals(name, include.getName());
+ assertEquals(includeURL, include.getScdlLocation());
+ verify(registry, reader, context);
+ }
+
+ public void testWithScdlResource() throws LoaderException, XMLStreamException {
+ String name = "foo";
+ String resource = "org/apache/tuscany/core/loader/test-include.scdl";
+ includeURL = cl.getResource(resource);
+ assertNotNull(includeURL);
+
+ expect(reader.getName()).andReturn(INCLUDE);
+ expect(reader.getAttributeValue(null, "name")).andReturn(name);
+ expect(reader.getAttributeValue(null, "scdlLocation")).andReturn(null);
+ expect(reader.getAttributeValue(null, "scdlResource")).andReturn(resource);
+ expect(reader.next()).andReturn(END_ELEMENT);
+
+ expect(context.getClassLoader()).andReturn(cl);
+
+ expect(registry.load((CompositeComponent) isNull(),
+ eq(includeURL),
+ eq(CompositeComponentType.class),
+ isA(DeploymentContext.class)))
+ .andReturn(null);
+ replay(registry, reader, context);
+
+ Include include = loader.load(null, reader, context);
assertEquals(name, include.getName());
- verify(reader);
+ assertEquals(includeURL, include.getScdlLocation());
+ verify(registry, reader, context);
}
protected void setUp() throws Exception {
super.setUp();
- this.loader = new IncludeLoader(null);
+ registry = createMock(LoaderRegistry.class);
reader = createMock(XMLStreamReader.class);
+ context = createMock(DeploymentContext.class);
+ cl = getClass().getClassLoader();
+ base = new URL("http://example.com/test.scdl");
+ includeURL = new URL("http://example.com/include.scdl");
+ loader = new IncludeLoader(registry);
}
}
Added: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl?view=auto&rev=440806
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl Wed Sep 6 10:48:13 2006
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<composite>
+ This file just needs to exist
+</composite>
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/loader/test-include.scdl
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.java?view=auto&rev=440806
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.java Wed Sep 6 10:48:13 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.spi.loader;
+
+/**
+ * Exception that indicates that an include was not provided.
+ *
+ * @version $Rev$ $Date$
+ */
+public class MissingIncludeException extends LoaderException {
+ private static final long serialVersionUID = -2917278473974880124L;
+
+ /**
+ * Default constructor.
+ */
+ public MissingIncludeException() {
+ super();
+ }
+}
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/MissingIncludeException.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