Author: jmarino
Date: Mon May 8 20:54:26 2006
New Revision: 405296
URL: http://svn.apache.org/viewcvs?rev=405296&view=rev
Log:
fix for TUSCANY-323
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/WireLoaderTestCase.java
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java
incubator/tuscany/java/sca/core/src/main/resources/system.module
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module?rev=405296&r1=405295&r2=405296&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/resources/helloworldmc/sca.module
Mon May 8 20:54:26 2006
@@ -21,14 +21,17 @@
<component name="HelloWorld">
<implementation.java
class="org.apache.tuscany.container.java.integration.HelloWorldMCImpl"/>
<references>
- <v:greetingProvider>GreetingProvider</v:greetingProvider>
+ <!-- <v:greetingProvider>GreetingProvider</v:greetingProvider>-->
</references>
<properties>
<v:bar>bar</v:bar>
<v:locale>en</v:locale>
</properties>
</component>
-
+ <wire>
+ <source.uri>HelloWorld/greetingProvider</source.uri>
+ <target.uri>GreetingProvider</target.uri>
+ </wire>
<component name="GreetingProvider">
<implementation.java
class="org.apache.tuscany.container.java.integration.GreetingProviderImpl"/>
<properties>
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java?rev=405296&r1=405295&r2=405296&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/AssemblyConstants.java
Mon May 8 20:54:26 2006
@@ -39,6 +39,8 @@
public static final QName REFERENCES = new QName(SCA_NAMESPACE,
"references");
public static final QName SERVICE = new QName(SCA_NAMESPACE, "service");
public static final QName WIRE = new QName(SCA_NAMESPACE, "wire");
+ public static final QName WIRE_SOURCE = new QName(SCA_NAMESPACE,
"source.uri");
+ public static final QName WIRE_TARGET = new QName(SCA_NAMESPACE,
"target.uri");
private AssemblyConstants() {
}
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java?rev=405296&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/assembly/WireLoader.java
Mon May 8 20:54:26 2006
@@ -0,0 +1,68 @@
+package org.apache.tuscany.core.loader.assembly;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.xml.namespace.QName;
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.loader.LoaderContext;
+import org.apache.tuscany.model.assembly.Wire;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * @version $Rev$ $Date$
+ */
[EMAIL PROTECTED]("MODULE")
+public class WireLoader extends AbstractLoader {
+ private static final String XSD = "http://www.w3.org/2001/XMLSchema";
+
+ private static final Map<QName, Class<?>> TYPE_MAP;
+
+ static {
+ // todo support more XSD types, or remove if we store the QName
+ TYPE_MAP = new HashMap<QName, Class<?>>(17);
+ TYPE_MAP.put(new QName(XSD, "string"), String.class);
+ }
+
+ public QName getXMLType() {
+ return AssemblyConstants.WIRE;
+ }
+
+ public Wire load(XMLStreamReader reader, LoaderContext loaderContext)
throws XMLStreamException, ConfigurationLoadException {
+ assert AssemblyConstants.WIRE.equals(reader.getName());
+ Wire wire = factory.createWire();
+ while (true) {
+ switch (reader.next()) {
+ case START_ELEMENT:
+ QName qname = reader.getName();
+ if (AssemblyConstants.WIRE_SOURCE.equals(qname)) {
+ String uri = reader.getElementText();
+ int pos = uri.indexOf('/');
+ if (pos < 1) {
+ throw new ConfigurationLoadException("Invalid
source wire");
+ }
+ String partName = uri.substring(0, pos);
+ String portName = uri.substring(pos + 1);
+ wire.setSource(factory.createServiceURI(null,
partName, portName));
+ } else if (AssemblyConstants.WIRE_TARGET.equals(qname)) {
+ String uri = reader.getElementText();
+ int pos = uri.indexOf('/');
+ if (pos < 1) {
+ wire.setTarget(factory.createServiceURI(null,
uri));
+ }else{
+ String partName = uri.substring(0, pos);
+ String portName = uri.substring(pos + 1);
+ wire.setTarget(factory.createServiceURI(null,
partName, portName));
+ }
+ }
+ break;
+ case END_ELEMENT:
+ return wire;
+ }
+ }
+ }
+}
Modified: incubator/tuscany/java/sca/core/src/main/resources/system.module
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/resources/system.module?rev=405296&r1=405295&r2=405296&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/resources/system.module (original)
+++ incubator/tuscany/java/sca/core/src/main/resources/system.module Mon May 8
20:54:26 2006
@@ -55,6 +55,10 @@
<system:implementation.system
class="org.apache.tuscany.core.loader.assembly.ReferenceLoader"/>
</component>
+ <component name="org.apache.tuscany.core.loader.assembly.WireLoader">
+ <system:implementation.system
class="org.apache.tuscany.core.loader.assembly.WireLoader"/>
+ </component>
+
<component name="org.apache.tuscany.core.loader.assembly.ServiceLoader">
<system:implementation.system
class="org.apache.tuscany.core.loader.assembly.ServiceLoader"/>
</component>
Added:
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/WireLoaderTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/WireLoaderTestCase.java?rev=405296&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/WireLoaderTestCase.java
(added)
+++
incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/WireLoaderTestCase.java
Mon May 8 20:54:26 2006
@@ -0,0 +1,44 @@
+package org.apache.tuscany.core.loader.assembly;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.model.assembly.Wire;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WireLoaderTestCase extends LoaderTestSupport {
+
+ public void testMinimal() throws XMLStreamException,
ConfigurationLoadException {
+ String xml = "<wire
xmlns='http://www.osoa.org/xmlns/sca/0.9'><source.uri>foo/fooService</source.uri><target.uri>bar</target.uri></wire>";
+ XMLStreamReader reader = getReader(xml);
+ Wire wire = (Wire) registry.load(reader, loaderContext);
+ reader.require(XMLStreamConstants.END_ELEMENT,
AssemblyConstants.WIRE.getNamespaceURI(),
AssemblyConstants.WIRE.getLocalPart());
+ assertEquals(XMLStreamConstants.END_DOCUMENT, reader.next());
+ assertNotNull(wire);
+ assertEquals("foo", wire.getSource().getPartName());
+ assertEquals("fooService", wire.getSource().getServiceName());
+ assertEquals("bar", wire.getTarget().getPartName());
+ }
+
+ public void testCompound() throws XMLStreamException,
ConfigurationLoadException {
+ String xml = "<wire
xmlns='http://www.osoa.org/xmlns/sca/0.9'><source.uri>foo/fooService</source.uri><target.uri>bar/bazService</target.uri></wire>";
+ XMLStreamReader reader = getReader(xml);
+ Wire wire = (Wire) registry.load(reader, loaderContext);
+ reader.require(XMLStreamConstants.END_ELEMENT,
AssemblyConstants.WIRE.getNamespaceURI(),
AssemblyConstants.WIRE.getLocalPart());
+ assertEquals(XMLStreamConstants.END_DOCUMENT, reader.next());
+ assertNotNull(wire);
+ assertEquals("foo", wire.getSource().getPartName());
+ assertEquals("fooService", wire.getSource().getServiceName());
+ assertEquals("bar", wire.getTarget().getPartName());
+ assertEquals("bazService", wire.getTarget().getServiceName());
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ registerLoader(new WireLoader());
+ }
+}
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java?rev=405296&r1=405295&r2=405296&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/AssemblyFactory.java
Mon May 8 20:54:26 2006
@@ -159,12 +159,14 @@
* Creates a new ServiceURI from a module component and configured port.
*
* @param moduleComponent the module component exposing the service
- * @param part the part that is providing the service
+ * @param part the part that is providing the service
* @param configuredPort the port on the part
* @return a new serviceURI for the exposed service
*/
ServiceURI createServiceURI(ModuleComponent moduleComponent, Part part,
ConfiguredPort configuredPort);
+ ServiceURI createServiceURI(ModuleComponent moduleComponent, String
partName, String serviceName);
+
/**
* Create a qname from a URI
*
@@ -226,7 +228,8 @@
* @param configuredService the configured service to expose
* @param binding the binding the EntryPoint should use
* @param configuredReference a configured reference to the target
- * @return an EntryPoint that exposes the supplied service using the
supplied bindng and which is wired using the supplied reference
+ * @return an EntryPoint that exposes the supplied service using the
supplied bindng and which is wired
+ * using the supplied reference
*/
EntryPoint createEntryPoint(String entryPointName, ConfiguredService
configuredService, Binding binding, ConfiguredReference configuredReference);
@@ -241,13 +244,15 @@
/**
* Returns a new ImportWSDL model object.
+ *
* @return a new ImportWSDL model object
*/
ImportWSDL createImportWSDL();
/**
* Returns a new ImportWSDL model object initialized with the supplied
values.
- * @param location the location where the WSDL definition can be found
+ *
+ * @param location the location where the WSDL definition can be found
* @param namespace the namespace URI for this import
* @return a new ImportWSDL model object
*/
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java?rev=405296&r1=405295&r2=405296&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyFactoryImpl.java
Mon May 8 20:54:26 2006
@@ -134,6 +134,10 @@
return new ServiceURIImpl(moduleComponent, part, configuredPort);
}
+ public ServiceURI createServiceURI(ModuleComponent moduleComponent, String
partName, String serviceName) {
+ return new ServiceURIImpl(moduleComponent,partName,serviceName);
+ }
+
public QName createQName(String uri) {
int h = uri.indexOf('#');
return new QName(uri.substring(0, h), uri.substring(h + 1));
Modified:
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java?rev=405296&r1=405295&r2=405296&view=diff
==============================================================================
---
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
(original)
+++
incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ServiceURIImpl.java
Mon May 8 20:54:26 2006
@@ -44,6 +44,15 @@
this.address = address;
}
+ protected ServiceURIImpl(ModuleComponent moduleComponent, String partName,
String portName) {
+ if (moduleComponent != null)
+ moduleComponentName = moduleComponent.getName();
+ else
+ moduleComponentName = "";
+ this.partName = partName;
+ this.serviceName = portName;
+ }
+
/**
* Constructor
*
@@ -110,7 +119,7 @@
*/
public boolean isSCAScheme() {
if (isSCAScheme == null) {
- if (address.startsWith("sca://")) {
+ if (address != null && address.startsWith("sca://")) {
isSCAScheme = Boolean.TRUE;
} else {
isSCAScheme = Boolean.FALSE;
@@ -154,7 +163,6 @@
/**
* Returns the module component name
- * @return
*/
public String getModuleComponentName() {
if (!isParsed)
@@ -164,7 +172,6 @@
/**
* Returns the part name
- * @return
*/
public String getPartName() {
if (!isParsed)
@@ -174,7 +181,6 @@
/**
* Returns the service name
- * @return
*/
public String getServiceName() {
if (!isParsed)