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)


Reply via email to