You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/04/08 00:24:13 UTC

svn commit: r526495 - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ contribution/src/main/java/org/apache/tuscany/services/spi/contri...

Author: jsdelfino
Date: Sat Apr  7 15:24:07 2007
New Revision: 526495

URL: http://svn.apache.org/viewvc?view=rev&rev=526495
Log:
Implemented XML writers for component implementations, Java interfaces and WSDL portTypes.

Added:
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java   (with props)
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java   (with props)
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite   (with props)
    incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java   (with props)
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/OptimizeTestCase.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/Calculator.composite
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/CalculatorComponent.constrainingType
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/CalculatorImpl.componentType
Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/StAXPerfTest.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java
    incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/xml/JavaInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/ReadTestCase.java
    incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/Calculator.composite
    incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorComponent.constrainingType
    incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorImpl.componentType
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/ReadTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/Calculator.composite
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorComponent.constrainingType
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorImpl.componentType

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java Sat Apr  7 15:24:07 2007
@@ -212,6 +212,8 @@
     
             for (Service service : componentType.getServices()) {
                 writeStart(writer, SERVICE, new XAttr(NAME, service.getName()));
+                //TODO write callback interface 
+                extensionProcessor.write(service.getInterface(), writer);
                 if (service.getCallback() != null) {
                     writeStart(writer, CALLBACK);
                     writeEnd(writer);
@@ -225,6 +227,8 @@
                 writeStart(writer, REFERENCE,
                       new XAttr(NAME, reference.getName()),
                       new XAttr(TARGET, target));
+                //TODO write callback interface 
+                extensionProcessor.write(reference.getInterface(), writer);
                 if (reference.getCallback() != null) {
                     writeStart(writer, CALLBACK);
                     writeEnd(writer);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeProcessor.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeProcessor.java Sat Apr  7 15:24:07 2007
@@ -343,6 +343,8 @@
                 ComponentService promotedService = compositeService.getPromotedService();
                 String promote = promotedService != null ? promotedService.getName() : null;
                 writeStart(writer, SERVICE, new XAttr(NAME, service.getName()), new XAttr(PROMOTE, promote));
+                //TODO write callback interface 
+                extensionProcessor.write(service.getInterface(), writer);
                 if (service.getCallback() != null) {
                     writeStart(writer, CALLBACK);
                     writeEnd(writer);
@@ -355,11 +357,13 @@
     
                 for (ComponentService service : component.getServices()) {
                     writeStart(writer, SERVICE, new XAttr(NAME, service.getName()));
-                    writeEnd(writer);
+                    //TODO write callback interface 
+                    extensionProcessor.write(service.getInterface(), writer);
                     if (service.getCallback() != null) {
                         writeStart(writer, CALLBACK);
                         writeEnd(writer);
                     }
+                    writeEnd(writer);
                 }
     
                 for (ComponentReference reference : component.getReferences()) {
@@ -368,6 +372,8 @@
                     writeStart(writer, REFERENCE,
                                new XAttr(NAME, reference.getName()),
                                new XAttr(TARGET,target));
+                    //TODO write callback interface 
+                    extensionProcessor.write(reference.getInterface(), writer);
                     if (reference.getCallback() != null) {
                         writeStart(writer, CALLBACK);
                         writeEnd(writer);
@@ -379,6 +385,16 @@
                     writeStart(writer, PROPERTY, new XAttr(NAME, property.getName()));
                     writeEnd(writer);
                 }
+
+                // Write the component implementation
+                Implementation implementation = component.getImplementation();
+                if (implementation instanceof Composite) {
+                    writeStart(writer, IMPLEMENTATION_COMPOSITE, 
+                       new XAttr(NAME, composite.getName()));
+                    writeEnd(writer);
+                } else {
+                    extensionProcessor.write(component.getImplementation(), writer);
+                }
     
                 writeEnd(writer);
             }
@@ -394,6 +410,8 @@
                 writeStart(writer, REFERENCE,
                            new XAttr(NAME, reference.getName()),
                            new XAttr(PROMOTE, promote));
+                //TODO write callback interface 
+                extensionProcessor.write(reference.getInterface(), writer);
                 if (reference.getCallback() != null) {
                     writeStart(writer, CALLBACK);
                     writeEnd(writer);

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeProcessor.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeProcessor.java Sat Apr  7 15:24:07 2007
@@ -181,12 +181,16 @@
     
             for (AbstractService service : constrainingType.getServices()) {
                 writeStart(writer, SERVICE, new XAttr(NAME, service.getName()));
+                //TODO write callback interface 
+                extensionProcessor.write(service.getInterface(), writer);
                 writeEnd(writer);
             }
     
             for (AbstractReference reference : constrainingType.getReferences()) {
                 writeStart(writer, REFERENCE,
                       new XAttr(NAME, reference.getName()));
+                //TODO write callback interface 
+                extensionProcessor.write(reference.getInterface(), writer);
                 writeEnd(writer);
             }
     

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java Sat Apr  7 15:24:07 2007
@@ -44,7 +44,7 @@
 import org.w3c.dom.Element;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test reading SCA XML assemblies.
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java Sat Apr  7 15:24:07 2007
@@ -36,7 +36,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultURLArtifactProcessorRegistry;
 
 /**
- * Test the resolving SCA XML assemblies.
+ * Test reading SCA XML assembly documents.
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadTestCase.java Sat Apr  7 15:24:07 2007
@@ -32,7 +32,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test reading SCA XML assemblies.
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java Sat Apr  7 15:24:07 2007
@@ -34,7 +34,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the resolving SCA XML assemblies.
+ * Test resolving SCA XML assemblies.
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/StAXPerfTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/StAXPerfTest.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/StAXPerfTest.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/StAXPerfTest.java Sat Apr  7 15:24:07 2007
@@ -33,7 +33,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test the performance of StAX parsing.
  * 
  * @version $Rev$ $Date$
  */

Added: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java?view=auto&rev=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java Sat Apr  7 15:24:07 2007
@@ -0,0 +1,104 @@
+/*
+ * 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.assembly.xml;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.ConstrainingType;
+import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultArtifactResolver;
+import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
+
+/**
+ * Test the wiring of SCA XML assemblies.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class WireTestCase extends TestCase {
+
+    private XMLInputFactory inputFactory;
+    private DefaultStAXArtifactProcessorRegistry registry;
+
+    public void setUp() throws Exception {
+        inputFactory = XMLInputFactory.newInstance();
+        registry = new DefaultStAXArtifactProcessorRegistry();
+    }
+
+    public void tearDown() throws Exception {
+        inputFactory = null;
+        registry = null;
+    }
+
+    public void testResolveConstrainingType() throws Exception {
+        DefaultArtifactResolver resolver = new DefaultArtifactResolver();
+        
+        InputStream is = getClass().getResourceAsStream("CalculatorComponent.constrainingType");
+        ConstrainingTypeProcessor constrainingTypeReader = new ConstrainingTypeProcessor(registry);
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+        ConstrainingType constrainingType = constrainingTypeReader.read(reader);
+        is.close();
+        assertNotNull(constrainingType);
+        resolver.put(constrainingType, constrainingType);
+
+        is = getClass().getResourceAsStream("TestAllCalculator.composite");
+        CompositeProcessor compositeReader = new CompositeProcessor(registry);
+        reader = inputFactory.createXMLStreamReader(is);
+        Composite composite = compositeReader.read(reader);
+        is.close();
+        assertNotNull(composite);
+        
+        compositeReader.resolve(composite, resolver);
+        compositeReader.wire(composite);
+        
+        assertEquals(composite.getConstrainingType(), constrainingType);
+        assertEquals(composite.getComponents().get(0).getConstrainingType(), constrainingType);
+    }
+
+    public void testResolveComposite() throws Exception {
+        DefaultArtifactResolver resolver = new DefaultArtifactResolver();
+        
+        InputStream is = getClass().getResourceAsStream("Calculator.composite");
+        CompositeProcessor compositeReader = new CompositeProcessor(registry);
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+        Composite nestedComposite = compositeReader.read(reader);
+        is.close();
+        assertNotNull(nestedComposite);
+        resolver.put(nestedComposite, nestedComposite);
+
+        is = getClass().getResourceAsStream("TestAllCalculator.composite");
+        compositeReader = new CompositeProcessor(registry);
+        reader = inputFactory.createXMLStreamReader(is);
+        Composite composite = compositeReader.read(reader);
+        is.close();
+        
+        compositeReader.resolve(composite, resolver);
+        compositeReader.wire(composite);
+        
+        assertEquals(composite.getComponents().get(2).getImplementation(), nestedComposite);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WireTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java Sat Apr  7 15:24:07 2007
@@ -33,7 +33,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test writing SCA XML assemblies.
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java Sat Apr  7 15:24:07 2007
@@ -73,27 +73,33 @@
     public void write(Object model, XMLStreamWriter outputSource) throws ContributionWriteException {
         
         // Delegate to the processor associated with the model type
-        StAXArtifactProcessor<Object> processor = (StAXArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
-        if (processor != null) {
-            processor.write(model, outputSource);
+        if (model != null) {
+            StAXArtifactProcessor<Object> processor = (StAXArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
+            if (processor != null) {
+                processor.write(model, outputSource);
+            }
         }
     }
     
     public void resolve(Object model, ArtifactResolver resolver) throws ContributionResolveException {
 
         // Delegate to the processor associated with the model type
-        StAXArtifactProcessor<Object> processor = (StAXArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
-        if (processor != null) {
-            processor.resolve(model, resolver);
+        if (model != null) {
+            StAXArtifactProcessor<Object> processor = (StAXArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
+            if (processor != null) {
+                processor.resolve(model, resolver);
+            }
         }
     }
     
     public void wire(Object model) throws ContributionWireException {
 
         // Delegate to the processor associated with the model type
-        StAXArtifactProcessor<Object> processor = (StAXArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
-        if (processor != null) {
-            processor.wire(model);
+        if (model != null) {
+            StAXArtifactProcessor<Object> processor = (StAXArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
+            if (processor != null) {
+                processor.wire(model);
+            }
         }
     }
 

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java Sat Apr  7 15:24:07 2007
@@ -53,9 +53,11 @@
     public void write(Object model, URL outputSource) throws ContributionWriteException {
         
         // Delegate to the processor associated with the particular model type
-        URLArtifactProcessor<Object> processor = (URLArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
-        if (processor != null) {
-            processor.write(model, outputSource);
+        if (model != null) {
+            URLArtifactProcessor<Object> processor = (URLArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
+            if (processor != null) {
+                processor.write(model, outputSource);
+            }
         }
     }
     
@@ -64,18 +66,22 @@
     public void resolve(Object model, ArtifactResolver resolver) throws ContributionResolveException {
 
         // Delegate to the processor associated with the model type
-        URLArtifactProcessor<Object> processor = (URLArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
-        if (processor != null) {
-            processor.resolve(model, resolver);
+        if (model != null) {
+            URLArtifactProcessor<Object> processor = (URLArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
+            if (processor != null) {
+                processor.resolve(model, resolver);
+            }
         }
     }
     
     public void wire(Object model) throws ContributionWireException {
 
         // Delegate to the processor associated with the model type
-        URLArtifactProcessor<Object> processor = (URLArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
-        if (processor != null) {
-            processor.wire(model);
+        if (model != null) {
+            URLArtifactProcessor<Object> processor = (URLArtifactProcessor<Object>)this.getProcessor((Class<Object>)model.getClass());
+            if (processor != null) {
+                processor.wire(model);
+            }
         }
     }
     

Modified: incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationProcessor.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationProcessor.java Sat Apr  7 15:24:07 2007
@@ -27,6 +27,7 @@
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
+import org.apache.tuscany.assembly.xml.Constants;
 import org.apache.tuscany.implementation.java.JavaImplementation;
 import org.apache.tuscany.implementation.java.JavaImplementationFactory;
 import org.apache.tuscany.implementation.java.impl.DefaultJavaImplementationFactory;
@@ -71,8 +72,18 @@
         }
     }
     
-    public void write(JavaImplementation model, XMLStreamWriter outputSource) throws ContributionWriteException {
-        // TODO Auto-generated method stub
+    public void write(JavaImplementation javaImplementation, XMLStreamWriter writer) throws ContributionWriteException {
+        try {
+            // Write an <interface.java>
+            writer.writeStartElement(Constants.SCA10_NS, IMPLEMENTATION_JAVA);
+            if (javaImplementation.getName() != null) {
+                writer.writeAttribute(CLASS, javaImplementation.getName());
+            }
+            writer.writeEndElement();
+            
+        } catch (XMLStreamException e) {
+            throw new ContributionWriteException(e);
+        }
     }
     
     public void resolve(JavaImplementation model, ArtifactResolver resolver) throws ContributionResolveException {

Modified: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java Sat Apr  7 15:24:07 2007
@@ -26,18 +26,14 @@
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.assembly.ComponentType;
 import org.apache.tuscany.assembly.Composite;
-import org.apache.tuscany.assembly.ConstrainingType;
 import org.apache.tuscany.assembly.util.CompositeUtil;
 import org.apache.tuscany.assembly.util.PrintUtil;
-import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
 import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
-import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test reading Java implementations.
  * 
  * @version $Rev$ $Date$
  */
@@ -59,29 +55,9 @@
         registry = null;
     }
 
-    public void testReadComponentType() throws Exception {
-        ComponentTypeProcessor componentTypeProcessor = new ComponentTypeProcessor(registry);
-        InputStream is = getClass().getClassLoader().getResourceAsStream("CalculatorImpl.componentType");
-        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
-        ComponentType componentType = componentTypeProcessor.read(reader);
-        assertNotNull(componentType);
-        
-        new PrintUtil(System.out).print(componentType);
-    }
-
-    public void testReadConstrainingType() throws Exception {
-        ConstrainingTypeProcessor constrainingTypeProcessor = new ConstrainingTypeProcessor(registry);
-        InputStream is = getClass().getClassLoader().getResourceAsStream("CalculatorComponent.constrainingType");
-        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
-        ConstrainingType constrainingType = constrainingTypeProcessor.read(reader);
-        assertNotNull(constrainingType);
-
-        new PrintUtil(System.out).print(constrainingType);
-    }
-    
     public void testReadComposite() throws Exception {
         CompositeProcessor compositeProcessor = new CompositeProcessor(registry);
-        InputStream is = getClass().getClassLoader().getResourceAsStream("Calculator.composite");
+        InputStream is = getClass().getResourceAsStream("Calculator.composite");
         XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
         Composite composite = compositeProcessor.read(reader);
         assertNotNull(composite);

Added: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java?view=auto&rev=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java Sat Apr  7 15:24:07 2007
@@ -0,0 +1,68 @@
+/*
+ * 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.implementation.java.xml;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLInputFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
+import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
+
+/**
+ * Test writing Java implementations.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class WriteTestCase extends TestCase {
+
+    XMLInputFactory inputFactory;
+    DefaultStAXArtifactProcessorRegistry registry;
+    
+    public void setUp() throws Exception {
+        inputFactory = XMLInputFactory.newInstance();
+        registry = new DefaultStAXArtifactProcessorRegistry();
+
+        registry.addArtifactProcessor(new CompositeProcessor(registry));
+        registry.addArtifactProcessor(new ComponentTypeProcessor(registry));
+        registry.addArtifactProcessor(new ConstrainingTypeProcessor(registry));
+
+        JavaImplementationProcessor javaProcessor = new JavaImplementationProcessor();
+        registry.addArtifactProcessor(javaProcessor);
+    }
+
+    public void tearDown() throws Exception {
+        inputFactory = null;
+        registry = null;
+    }
+
+    public void testReadWriteComposite() throws Exception {
+        InputStream is = getClass().getResourceAsStream("Calculator.composite");
+        Composite composite = registry.read(is, Composite.class);
+        assertNotNull(composite);
+        registry.write(composite, System.out);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/WriteTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite?view=auto&rev=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite (added)
+++ incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite Sat Apr  7 15:24:07 2007
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+	xmlns:calc="http://sample.calculator"
+	targetNamespace="http://sample.calculator"
+	name="Calculator">
+
+    <service name="CalculatorService" promote="CalculatorServiceComponent">
+        <interface.java interface="calculator.CalculatorService"/>
+    </service>
+
+    <component name="CalculatorServiceComponent">
+		<implementation.java class="calculator.CalculatorServiceImpl"/>
+        <reference name="addService" target="AddServiceComponent"/>
+        <reference name="subtractService" target="SubtractServiceComponent"/>
+        <reference name="multiplyService" target="MultiplyServiceComponent"/>
+        <reference name="divideService" target="DivideServiceComponent"/>
+    </component>
+
+    <component name="AddServiceComponent">
+        <implementation.java class="calculator.AddServiceImpl"/>
+    </component>
+
+    <component name="SubtractServiceComponent">
+        <implementation.java class="calculator.SubtractServiceImpl"/>
+    </component>
+
+    <component name="MultiplyServiceComponent">
+        <implementation.java class="calculator.MultiplyServiceImpl"/>
+    </component>
+
+    <component name="DivideServiceComponent">
+        <implementation.java class="calculator.DivideServiceImpl"/>
+    </component>
+
+</composite>

Propchange: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java-xml/src/test/resources/org/apache/tuscany/implementation/java/xml/Calculator.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/xml/JavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/xml/JavaInterfaceProcessor.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/xml/JavaInterfaceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/interfacedef/java/xml/JavaInterfaceProcessor.java Sat Apr  7 15:24:07 2007
@@ -26,6 +26,7 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.tuscany.assembly.xml.Constants;
 import org.apache.tuscany.interfacedef.java.JavaFactory;
 import org.apache.tuscany.interfacedef.java.JavaInterface;
 import org.apache.tuscany.interfacedef.java.impl.DefaultJavaFactory;
@@ -49,7 +50,6 @@
     }
 
     public JavaInterface read(XMLStreamReader reader) throws ContributionReadException {
-        
         try {
     
             // Read an <interface.java>
@@ -70,9 +70,18 @@
         }
     }
     
-    public void write(JavaInterface model, XMLStreamWriter outputSource) throws ContributionWriteException {
-        // TODO Auto-generated method stub
-        
+    public void write(JavaInterface javaInterface, XMLStreamWriter writer) throws ContributionWriteException {
+        try {
+            // Write an <interface.java>
+            writer.writeStartElement(Constants.SCA10_NS, INTERFACE_JAVA);
+            if (javaInterface.getName() != null) {
+                writer.writeAttribute(INTERFACE, javaInterface.getName());
+            }
+            writer.writeEndElement();
+            
+        } catch (XMLStreamException e) {
+            throw new ContributionWriteException(e);
+        }
     }
     
     public void resolve(JavaInterface model, ArtifactResolver resolver) throws ContributionResolveException {

Modified: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/ReadTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/ReadTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/ReadTestCase.java Sat Apr  7 15:24:07 2007
@@ -38,7 +38,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test reading Java interfaces.
  * 
  * @version $Rev$ $Date$
  */

Added: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java?view=auto&rev=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java Sat Apr  7 15:24:07 2007
@@ -0,0 +1,84 @@
+/*
+ * 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.interfacedef.java.xml;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLInputFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.assembly.ComponentType;
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.ConstrainingType;
+import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
+import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
+
+/**
+ * Test writing Java interfaces.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class WriteTestCase extends TestCase {
+
+    XMLInputFactory inputFactory;
+    DefaultStAXArtifactProcessorRegistry registry;
+
+    public void setUp() throws Exception {
+        inputFactory = XMLInputFactory.newInstance();
+        registry = new DefaultStAXArtifactProcessorRegistry();
+
+        registry.addArtifactProcessor(new CompositeProcessor(registry));
+        registry.addArtifactProcessor(new ComponentTypeProcessor(registry));
+        registry.addArtifactProcessor(new ConstrainingTypeProcessor(registry));
+
+        JavaInterfaceProcessor javaProcessor = new JavaInterfaceProcessor();
+        registry.addArtifactProcessor(javaProcessor);
+    }
+
+    public void tearDown() throws Exception {
+        inputFactory = null;
+        registry = null;
+    }
+
+    public void testReadWriteComponentType() throws Exception {
+        InputStream is = getClass().getResourceAsStream("CalculatorImpl.componentType");
+        ComponentType componentType = registry.read(is, ComponentType.class);
+        assertNotNull(componentType);
+        registry.write(componentType, System.out);
+    }
+
+    public void testReadWriteConstrainingType() throws Exception {
+        InputStream is = getClass().getResourceAsStream("CalculatorComponent.constrainingType");
+        ConstrainingType constrainingType = registry.read(is, ConstrainingType.class);
+        assertNotNull(constrainingType);
+        registry.write(constrainingType, System.out);
+    }
+
+    public void testReadWriteComposite() throws Exception {
+        InputStream is = getClass().getResourceAsStream("Calculator.composite");
+        Composite composite = registry.read(is, Composite.class);
+        assertNotNull(composite);
+        registry.write(composite, System.out);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/java/org/apache/tuscany/interfacedef/java/xml/WriteTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/Calculator.composite?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/Calculator.composite (original)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/Calculator.composite Sat Apr  7 15:24:07 2007
@@ -20,7 +20,7 @@
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
 	xmlns:calc="http://sample.calculator"
 	targetNamespace="http://calc"
-	name="calc:Calculator">
+	name="Calculator">
 
     <service name="CalculatorService" promote="CalculatorServiceComponent">
         <interface.java interface="calculator.CalculatorService"/>

Modified: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorComponent.constrainingType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorComponent.constrainingType?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorComponent.constrainingType (original)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorComponent.constrainingType Sat Apr  7 15:24:07 2007
@@ -23,11 +23,11 @@
 	name="CalculatorComponent">
 
   <service name="CalculatorService">
-        <interface.java class="calculator.CalculatorService" />
+        <interface.java interface="calculator.CalculatorService" />
   </service>
 
   <reference name="divideService">
-        <interface.java class="calculator.DivideService" />
+        <interface.java interface="calculator.DivideService" />
   </reference>  
 
 </constrainingType>              

Modified: incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorImpl.componentType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorImpl.componentType?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorImpl.componentType (original)
+++ incubator/tuscany/java/sca/modules/interface-java-xml/src/test/resources/org/apache/tuscany/interfacedef/java/xml/CalculatorImpl.componentType Sat Apr  7 15:24:07 2007
@@ -20,11 +20,11 @@
 <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
 
   <service name="CalculatorService">
-        <interface.java class="calculator.CalculatorService" />
+        <interface.java interface="calculator.CalculatorService" />
   </service>
 
   <reference name="divideService">
-        <interface.java class="calculator.DivideService" />
+        <interface.java interface="calculator.DivideService" />
   </reference>  
 
 </componentType>              

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java Sat Apr  7 15:24:07 2007
@@ -26,6 +26,7 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.tuscany.assembly.xml.Constants;
 import org.apache.tuscany.interfacedef.wsdl.WSDLFactory;
 import org.apache.tuscany.interfacedef.wsdl.WSDLInterface;
 import org.apache.tuscany.interfacedef.wsdl.impl.DefaultWSDLFactory;
@@ -49,15 +50,26 @@
     }
 
     public WSDLInterface read(XMLStreamReader reader) throws ContributionReadException {
-        
         try {
     
-            // Read an <interface.java>
+            // Read an <interface.wsdl>
             WSDLInterface wsdlInterface = wsdlFactory.createWSDLInterface();
             wsdlInterface.setUnresolved(true);
-            // TODO handle qname
-            wsdlInterface.setName(new QName("", reader.getAttributeValue(null, INTERFACE)));
-    
+
+            // Read a qname in the form:
+            // namespace#wsdl.interface(name)
+            String uri = reader.getAttributeValue(null, INTERFACE);
+            if (uri != null) {
+                int index = uri.indexOf('#');
+                if (index == -1) {
+                    throw new ContributionReadException("Invalid WSDL interface attribute: " + uri);
+                }
+                String namespace = uri.substring(0, index);
+                String name = uri.substring(index + 1);
+                name = name.substring("wsdl.interface(".length(), name.length() - 1);
+                wsdlInterface.setName(new QName(namespace, name));
+            }
+                
             // Skip to end element
             while (reader.hasNext()) {
                 if (reader.next() == END_ELEMENT && INTERFACE_WSDL_QNAME.equals(reader.getName())) {
@@ -71,8 +83,21 @@
         }
     }
     
-    public void write(WSDLInterface model, XMLStreamWriter outputSource) throws ContributionWriteException {
-        // TODO Auto-generated method stub
+    public void write(WSDLInterface wsdlInterface, XMLStreamWriter writer) throws ContributionWriteException {
+        try {
+            // Write an <interface.wsdl>
+            writer.writeStartElement(Constants.SCA10_NS, INTERFACE_WSDL);
+            if (wsdlInterface.getName() != null) {
+                //FIXME Write portType QName
+                QName qname = wsdlInterface.getName();
+                String uri = qname.getNamespaceURI() + "#wsdl.interface(" + qname.getLocalPart() + ")";
+                writer.writeAttribute(INTERFACE, uri);
+            }
+            writer.writeEndElement();
+            
+        } catch (XMLStreamException e) {
+            throw new ContributionWriteException(e);
+        }
     }
     
     public void resolve(WSDLInterface model, ArtifactResolver resolver) throws ContributionResolveException {

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/ReadTestCase.java?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/ReadTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/ReadTestCase.java Sat Apr  7 15:24:07 2007
@@ -38,7 +38,7 @@
 import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
 
 /**
- * Test the usability of the assembly model API when loading SCDL
+ * Test reading WSDL interfaces.
  * 
  * @version $Rev$ $Date$
  */

Added: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java?view=auto&rev=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java Sat Apr  7 15:24:07 2007
@@ -0,0 +1,84 @@
+/*
+ * 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.interfacedef.wsdl.xml;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLInputFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.assembly.ComponentType;
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.ConstrainingType;
+import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
+import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
+
+/**
+ * Test reading/write WSDL interfaces.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class WriteTestCase extends TestCase {
+
+    XMLInputFactory inputFactory;
+    DefaultStAXArtifactProcessorRegistry registry;
+
+    public void setUp() throws Exception {
+        inputFactory = XMLInputFactory.newInstance();
+        registry = new DefaultStAXArtifactProcessorRegistry();
+
+        registry.addArtifactProcessor(new CompositeProcessor(registry));
+        registry.addArtifactProcessor(new ComponentTypeProcessor(registry));
+        registry.addArtifactProcessor(new ConstrainingTypeProcessor(registry));
+
+        WSDLInterfaceProcessor wsdlProcessor = new WSDLInterfaceProcessor();
+        registry.addArtifactProcessor(wsdlProcessor);
+    }
+
+    public void tearDown() throws Exception {
+        inputFactory = null;
+        registry = null;
+    }
+
+    public void testReadWriteComponentType() throws Exception {
+        InputStream is = getClass().getResourceAsStream("CalculatorImpl.componentType");
+        ComponentType componentType = registry.read(is, ComponentType.class);
+        assertNotNull(componentType);
+        registry.write(componentType, System.out);
+    }
+
+    public void testReadWriteConstrainingType() throws Exception {
+        InputStream is = getClass().getResourceAsStream("CalculatorComponent.constrainingType");
+        ConstrainingType constrainingType = registry.read(is, ConstrainingType.class);
+        assertNotNull(constrainingType);
+        registry.write(constrainingType, System.out);
+    }
+
+    public void testReadWriteComposite() throws Exception {
+        InputStream is = getClass().getResourceAsStream("Calculator.composite");
+        Composite composite = registry.read(is, Composite.class);
+        assertNotNull(composite);
+        registry.write(composite, System.out);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/interfacedef/wsdl/xml/WriteTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/Calculator.composite?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/Calculator.composite (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/Calculator.composite Sat Apr  7 15:24:07 2007
@@ -20,7 +20,7 @@
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
 	xmlns:calc="http://sample.calculator"
 	targetNamespace="http://calc"
-	name="calc:Calculator">
+	name="Calculator">
 
     <service name="CalculatorService" promote="CalculatorServiceComponent">
         <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorComponent.constrainingType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorComponent.constrainingType?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorComponent.constrainingType (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorComponent.constrainingType Sat Apr  7 15:24:07 2007
@@ -27,7 +27,7 @@
   </service>
 
   <reference name="divideService">
-        <interface.java class="calculator.DivideService" />
+        <interface.wsdl interface="http://sample/calculator#wsdl.interface(Divide)"/>
   </reference>  
 
 </constrainingType>              

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorImpl.componentType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorImpl.componentType?view=diff&rev=526495&r1=526494&r2=526495
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorImpl.componentType (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/org/apache/tuscany/interfacedef/wsdl/xml/CalculatorImpl.componentType Sat Apr  7 15:24:07 2007
@@ -24,7 +24,7 @@
   </service>
 
   <reference name="divideService">
-        <interface.java class="calculator.DivideService" />
+        <interface.wsdl interface="http://sample/calculator#wsdl.interface(Divide)"/>
   </reference>  
 
 </componentType>              



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org