You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/02/25 00:47:34 UTC
svn commit: r511374 - in /incubator/tuscany/java/sca/kernel/core/src:
main/java/org/apache/tuscany/core/loader/
test/java/org/apache/tuscany/core/deployer/
test/java/org/apache/tuscany/core/loader/
test/resources/org/apache/tuscany/core/deployer/
Author: jmarino
Date: Sat Feb 24 15:47:33 2007
New Revision: 511374
URL: http://svn.apache.org/viewvc?view=rev&rev=511374
Log:
support SCA 1.0 reference target syntax
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoReferenceTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderRefTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=511374&r1=511373&r2=511374
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Sat Feb 24 15:47:33 2007
@@ -20,7 +20,10 @@
import java.lang.reflect.Type;
import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
+import java.util.StringTokenizer;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
@@ -229,29 +232,38 @@
throw new InvalidReferenceException("No name specified");
}
- String target = reader.getElementText();
+ String target = reader.getAttributeValue(null, "target");
if (target == null) {
+ // TODO fix xcv
throw new InvalidReferenceException("No target specified", name);
}
- QualifiedName qName = new QualifiedName(target.trim());
-
URI componentId = deploymentContext.getComponentId();
- URI targetURI = componentId.resolve(qName.getFragment());
+ StringTokenizer tokenizer = new StringTokenizer(target);
+ List<URI> uris = new ArrayList<URI>();
+ while (tokenizer.hasMoreTokens()) {
+ String token = tokenizer.nextToken();
+ QualifiedName qName = new QualifiedName(token);
+ uris.add(componentId.resolve(qName.getFragment()));
+ }
+
Implementation<?> impl = componentDefinition.getImplementation();
ComponentType<?, ?, ?> componentType = impl.getComponentType();
if (!componentType.getReferences().containsKey(name)) {
throw new UndefinedReferenceException(name);
}
if (componentType instanceof CompositeComponentType) {
+ if (uris.size() != 1) {
+ // FIXME not yet implemented
+ throw new UnsupportedOperationException();
+ }
ReferenceDefinition definition = componentType.getReferences().get(name);
if (definition.getBindings().isEmpty()) {
// TODO JFM allow selection of a default binding
- LocalBindingDefinition binding = new LocalBindingDefinition(targetURI);
+ LocalBindingDefinition binding = new LocalBindingDefinition(uris.get(0));
definition.addBinding(binding);
} else {
for (BindingDefinition binding : definition.getBindings()) {
- // FIXME this is bad - clarify in the spec how URIs are overriden
- binding.setTargetUri(targetURI);
+ binding.setTargetUri(uris.get(0));
}
}
} else {
@@ -261,7 +273,9 @@
referenceTarget.setReferenceName(componentId.resolve('#' + name));
componentDefinition.add(referenceTarget);
}
- referenceTarget.addTarget(targetURI);
+ for (URI uri : uris) {
+ referenceTarget.addTarget(uri);
+ }
}
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java?view=diff&rev=511374&r1=511373&r2=511374
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java Sat Feb 24 15:47:33 2007
@@ -124,8 +124,6 @@
URL scdl = BootstrapDeployerTestCase.class.getResource("boot1.scdl");
implementation.setScdlLocation(scdl);
CompositeComponent parent = EasyMock.createMock(CompositeComponent.class);
-// URI uri = URI.create("sca://parent");
-// EasyMock.expect(parent.getUri()).andReturn(uri).atLeastOnce();
replay(parent);
// load the boot1 file using the bootstrap deployer
componentDefinition.setUri(URI.create("sca://parent/simple"));
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoReferenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoReferenceTestCase.java?view=diff&rev=511374&r1=511373&r2=511374
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoReferenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoReferenceTestCase.java Sat Feb 24 15:47:33 2007
@@ -70,7 +70,7 @@
EasyMock.expect(reader.getName()).andReturn(REFERENCE);
EasyMock.expect(reader.getAttributeValue((String) isNull(), EasyMock.eq("name")))
.andReturn("noreference");
- EasyMock.expect(reader.getElementText()).andReturn("text");
+ EasyMock.expect(reader.getAttributeValue(null, "target")).andReturn("text");
EasyMock.expect(reader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
EasyMock.replay(reader);
@@ -81,7 +81,7 @@
EasyMock.expect(mockRegistry.load(EasyMock.isA(CompositeComponent.class),
(ModelObject) isNull(),
EasyMock.isA(XMLStreamReader.class),
- EasyMock.isA(DeploymentContext.class))).andReturn(impl);
+ EasyMock.isA(DeploymentContext.class))).andReturn(impl);
EasyMock.replay(mockRegistry);
loader = new ComponentLoader(mockRegistry, null);
parent = EasyMock.createMock(CompositeComponent.class);
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderRefTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderRefTestCase.java?view=diff&rev=511374&r1=511373&r2=511374
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderRefTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderRefTestCase.java Sat Feb 24 15:47:33 2007
@@ -57,7 +57,7 @@
definition.setUri(URI.create("component"));
XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
EasyMock.expect(reader.getAttributeValue(null, "name")).andReturn("reference");
- EasyMock.expect(reader.getElementText()).andReturn("target");
+ EasyMock.expect(reader.getAttributeValue(null, "target")).andReturn("target");
EasyMock.replay(reader);
loader.loadReference(reader, context, definition);
ReferenceTarget target = definition.getReferenceTargets().get("reference");
@@ -80,13 +80,37 @@
definition.setUri(URI.create("component"));
XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
EasyMock.expect(reader.getAttributeValue(null, "name")).andReturn("reference");
- EasyMock.expect(reader.getElementText()).andReturn("target/fragment");
+ EasyMock.expect(reader.getAttributeValue(null, "target")).andReturn("target/fragment");
EasyMock.replay(reader);
loader.loadReference(reader, context, definition);
ReferenceTarget target = definition.getReferenceTargets().get("reference");
assertEquals(1, target.getTargets().size());
URI uri = target.getTargets().get(0);
assertEquals(componentId.resolve("target#fragment"), uri);
+ EasyMock.verify(reader);
+ }
+
+ public void testLoadReferenceWithMultipleTargetUris() throws LoaderException, XMLStreamException {
+ PojoComponentType<?, MockReferenceDefinition, Property<?>> type =
+ new PojoComponentType<ServiceDefinition, MockReferenceDefinition, Property<?>>();
+ MockReferenceDefinition reference = new MockReferenceDefinition();
+ reference.setUri(URI.create("#reference"));
+ type.add(reference);
+ JavaImplementation impl = new JavaImplementation();
+ impl.setComponentType(type);
+ ComponentDefinition<?> definition = new ComponentDefinition<JavaImplementation>(impl);
+ definition.setUri(URI.create("component"));
+ XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
+ EasyMock.expect(reader.getAttributeValue(null, "name")).andReturn("reference");
+ EasyMock.expect(reader.getAttributeValue(null, "target")).andReturn("target1/fragment1 target2/fragment2");
+ EasyMock.replay(reader);
+ loader.loadReference(reader, context, definition);
+ ReferenceTarget target = definition.getReferenceTargets().get("reference");
+ assertEquals(2, target.getTargets().size());
+ URI uri1 = target.getTargets().get(0);
+ assertEquals(componentId.resolve("target1#fragment1"), uri1);
+ URI uri2 = target.getTargets().get(1);
+ assertEquals(componentId.resolve("target2#fragment2"), uri2);
EasyMock.verify(reader);
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl?view=diff&rev=511374&r1=511373&r2=511374
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl Sat Feb 24 15:47:33 2007
@@ -20,7 +20,7 @@
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
name="boot1">
- <service name="service" >
+ <service name="service">
<interface.java interface="org.apache.tuscany.core.mock.component.BasicInterface"/>
<reference>component</reference>
</service>
@@ -28,7 +28,7 @@
<component name="component">
<system:implementation.system class="org.apache.tuscany.core.mock.component.BasicInterfaceImpl"/>
<property name="publicProperty">propval</property>
- <reference name="publicReference">component2</reference>
+ <reference name="publicReference" target="component2"/>
</component>
<include name="boot1-include" scdlLocation="boot1-include.scdl"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org