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/05 08:25:04 UTC

svn commit: r525722 - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/ assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ assem...

Author: jsdelfino
Date: Wed Apr  4 23:25:02 2007
New Revision: 525722

URL: http://svn.apache.org/viewvc?view=rev&rev=525722
Log:
Implemented resolve method in assembly model ArtifactProcessors.

Added:
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java   (with props)
    incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java   (with props)
    incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java
    incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/WSDLFactory.java
    incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/WSDLInterface.java
Modified:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java
    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/resources/Calculator.composite
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/CalculatorComponent.constrainingType
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/TestAllCalculator.composite
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/CompositeImpl.java
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/ConstrainingTypeImpl.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactResolver.java
    incubator/tuscany/java/sca/modules/idl-java/src/main/java/org/apache/tuscany/idl/java/impl/JavaInterfaceImpl.java
    incubator/tuscany/java/sca/modules/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/DefaultWSDLFactory.java
    incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/WSDLInterfaceImpl.java
    incubator/tuscany/java/sca/modules/impl-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java Wed Apr  4 23:25:02 2007
@@ -69,4 +69,6 @@
     String ZERO_N = "0..n";
     String ONE_ONE = "1..1";
     String ONE_N = "1..n";
+    String IMPLEMENTATION_COMPOSITE = "implementation.composite";
+    QName IMPLEMENTATION_COMPOSITE_QNAME = new QName(SCA10_NS, IMPLEMENTATION_COMPOSITE);
 }

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java Wed Apr  4 23:25:02 2007
@@ -35,19 +35,24 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.assembly.AbstractContract;
 import org.apache.tuscany.assembly.AbstractProperty;
 import org.apache.tuscany.assembly.AbstractReference;
 import org.apache.tuscany.assembly.AssemblyFactory;
+import org.apache.tuscany.assembly.Binding;
 import org.apache.tuscany.assembly.ConstrainingType;
+import org.apache.tuscany.assembly.Contract;
 import org.apache.tuscany.assembly.Multiplicity;
 import org.apache.tuscany.assembly.Property;
 import org.apache.tuscany.assembly.xml.Constants;
+import org.apache.tuscany.idl.Interface;
 import org.apache.tuscany.idl.Operation;
 import org.apache.tuscany.policy.Intent;
 import org.apache.tuscany.policy.IntentAttachPoint;
 import org.apache.tuscany.policy.PolicyFactory;
 import org.apache.tuscany.policy.PolicySet;
 import org.apache.tuscany.policy.PolicySetAttachPoint;
+import org.apache.tuscany.services.spi.contribution.ArtifactResolver;
 import org.apache.tuscany.services.spi.contribution.ContributionReadException;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
@@ -64,26 +69,45 @@
     private AssemblyFactory factory;
     private PolicyFactory policyFactory;
 
+    /**
+     * Constructs a new BaseArtifactProcessor.
+     */
     BaseArtifactProcessor() {
     }
 
+    /**
+     * Construcst a new BaseArtifactProcessor.
+     * @param factory
+     * @param policyFactory
+     */
     BaseArtifactProcessor(AssemblyFactory factory, PolicyFactory policyFactory) {
         this.factory = factory;
         this.policyFactory = policyFactory;
     }
 
+    /**
+     * Returns the string value of an attribute.
+     * @param reader
+     * @param name
+     * @return
+     */
     protected String getString(XMLStreamReader reader, String name) {
         return reader.getAttributeValue(null, name);
     }
 
+    /**
+     * Returns the qname value of an attribute.
+     * @param reader
+     * @param name
+     * @return
+     */
     protected QName getQName(XMLStreamReader reader, String name) {
         String qname = reader.getAttributeValue(null, name);
         return getQNameValue(reader, qname);
     }
 
     /**
-     * Get the value of xsi:type attribute
-     * 
+     * Returns the value of xsi:type attribute
      * @param reader The XML stream reader
      * @return The QName of the type, if the attribute is not present, null is
      *         returned.
@@ -93,6 +117,12 @@
         return getQNameValue(reader, qname);
     }
 
+    /**
+     * Returns a qname from a string.  
+     * @param reader
+     * @param value
+     * @return
+     */
     protected QName getQNameValue(XMLStreamReader reader, String value) {
         if (value != null) {
             int index = value.indexOf(':');
@@ -108,11 +138,23 @@
         }
     }
 
+    /**
+     * Returns the boolean value of an attribute.
+     * @param reader
+     * @param name
+     * @return
+     */
     protected boolean getBoolean(XMLStreamReader reader, String name) {
         String value = reader.getAttributeValue(null, name);
         return Boolean.valueOf(value);
     }
 
+    /**
+     * Returns the value of an attribute as a list of qnames.
+     * @param reader
+     * @param name
+     * @return
+     */
     protected List<QName> getQNames(XMLStreamReader reader, String name) {
         String value = reader.getAttributeValue(null, name);
         if (value != null) {
@@ -126,10 +168,21 @@
         }
     }
 
+    /**
+     * Read policy intents.
+     * @param attachPoint
+     * @param reader
+     */
     protected void readIntents(IntentAttachPoint attachPoint, XMLStreamReader reader) {
         readIntents(attachPoint, null, reader);
     }
 
+    /**
+     * Read policy intents associated with an operation.
+     * @param attachPoint
+     * @param operation
+     * @param reader
+     */
     protected void readIntents(IntentAttachPoint attachPoint, Operation operation, XMLStreamReader reader) {
         String value = reader.getAttributeValue(null, Constants.REQUIRES);
         if (value != null) {
@@ -146,21 +199,21 @@
         }
     }
 
+    /**
+     * Reads policy intents and policy sets.
+     * @param attachPoint
+     * @param reader
+     */
     protected void readPolicies(PolicySetAttachPoint attachPoint, XMLStreamReader reader) {
         readPolicies(attachPoint, null, reader);
     }
 
-    protected void readMultiplicity(AbstractReference reference, XMLStreamReader reader) {
-        String value = reader.getAttributeValue(null, MULTIPLICITY);
-        if (ZERO_ONE.equals(value)) {
-            reference.setMultiplicity(Multiplicity.ZERO_ONE);
-        } else if (ONE_N.equals(value)) {
-            reference.setMultiplicity(Multiplicity.ONE_N);
-        } else if (ZERO_N.equals(value)) {
-            reference.setMultiplicity(Multiplicity.ZERO_N);
-        }
-    }
-
+    /**
+     * Reads policy intents and policy sets associated with an operation.
+     * @param attachPoint
+     * @param operation
+     * @param reader
+     */
     protected void readPolicies(PolicySetAttachPoint attachPoint, Operation operation, XMLStreamReader reader) {
         readIntents(attachPoint, operation, reader);
 
@@ -179,6 +232,27 @@
         }
     }
 
+    /**
+     * Read a multiplicity attribute.
+     * @param reference
+     * @param reader
+     */
+    protected void readMultiplicity(AbstractReference reference, XMLStreamReader reader) {
+        String value = reader.getAttributeValue(null, MULTIPLICITY);
+        if (ZERO_ONE.equals(value)) {
+            reference.setMultiplicity(Multiplicity.ZERO_ONE);
+        } else if (ONE_N.equals(value)) {
+            reference.setMultiplicity(Multiplicity.ONE_N);
+        } else if (ZERO_N.equals(value)) {
+            reference.setMultiplicity(Multiplicity.ZERO_N);
+        }
+    }
+
+    /**
+     * Returns the value of a constrainingType attribute.
+     * @param reader
+     * @return
+     */
     protected ConstrainingType getConstrainingType(XMLStreamReader reader) {
         QName constrainingTypeName = getQName(reader, "constrainingType");
         if (constrainingTypeName != null) {
@@ -191,6 +265,13 @@
         }
     }
 
+    /**
+     * Reads an abstract property element.
+     * @param prop
+     * @param reader
+     * @throws XMLStreamException
+     * @throws ContributionReadException
+     */
     protected void readAbstractProperty(AbstractProperty prop, XMLStreamReader reader)
         throws XMLStreamException, ContributionReadException {
         prop.setName(getString(reader, "name"));
@@ -202,11 +283,24 @@
         prop.setDefaultValue(value);
     }
 
+    /**
+     * Reads a property element.
+     * @param prop
+     * @param reader
+     * @throws XMLStreamException
+     * @throws ContributionReadException
+     */
     protected void readProperty(Property prop, XMLStreamReader reader)
         throws XMLStreamException, ContributionReadException {
         readAbstractProperty(prop, reader);
     }
 
+    /**
+     * Parse the next child element.
+     * @param reader
+     * @return
+     * @throws XMLStreamException
+     */
     protected boolean nextChildElement(XMLStreamReader reader) throws XMLStreamException {
         while (reader.hasNext()) {
             int event = reader.next();
@@ -223,7 +317,6 @@
     /**
      * Advance the stream to the next END_ELEMENT event skipping any nested
      * content.
-     * 
      * @param reader the reader to advance
      * @throws XMLStreamException if there was a problem reading the stream
      */
@@ -242,6 +335,61 @@
         }
     }
 
+    /**
+     * Resolve interface, callback interface and bindings on a list of contracts.
+     * @param contracts the list of contracts
+     * @param resolver the resolver to use to resolve models
+     */
+    protected <C extends Contract> void resolveContract(List<C> contracts, ArtifactResolver resolver) {
+        for (Contract contract: contracts) {
+            
+            // Resolve interface
+            Interface callInterface = contract.getInterface();
+            callInterface = resolver.resolve(Interface.class, callInterface);
+            contract.setInterface(callInterface);
+    
+            // Resolve callback interface 
+            Interface callbackInterface = contract.getCallbackInterface();
+            callbackInterface = resolver.resolve(Interface.class, callbackInterface);
+            contract.setCallbackInterface(callbackInterface);
+    
+            // Resolve bindings
+            for (int i = 0, n = contract.getBindings().size(); i < n; i++) {
+                Binding binding = contract.getBindings().get(i);
+                binding = resolver.resolve(Binding.class, binding);
+                contract.getBindings().set(i, binding);
+            }
+        }
+    }
+
+    /**
+     * Resolve interface and callback interface on a list of abstract contracts.
+     * @param contracts the list of contracts
+     * @param resolver the resolver to use to resolve models
+     */
+    protected <C extends AbstractContract> void resolveAbstractContract(List<C> contracts, ArtifactResolver resolver) {
+        for (AbstractContract contract: contracts) {
+            
+            // Resolve interface
+            Interface callInterface = contract.getInterface();
+            callInterface = resolver.resolve(Interface.class, callInterface);
+            contract.setInterface(callInterface);
+    
+            // Resolve callback interface 
+            Interface callbackInterface = contract.getCallbackInterface();
+            callbackInterface = resolver.resolve(Interface.class, callbackInterface);
+            contract.setCallbackInterface(callbackInterface);
+        }
+    }
+
+    /**
+     * Read a property value.
+     * @param reader
+     * @param type
+     * @return
+     * @throws XMLStreamException
+     * @throws ContributionReadException
+     */
     public static Document readPropertyValue(XMLStreamReader reader, QName type)
         throws XMLStreamException, ContributionReadException {
         Document doc = DOMUtil.newDocument();

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=525722&r1=525721&r2=525722
==============================================================================
--- 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 Wed Apr  4 23:25:02 2007
@@ -202,8 +202,11 @@
         return componentType;
     }
     
-    public void resolve(ComponentType model, ArtifactResolver resolver) throws ContributionException {
-        //TODO resolve pointers to other models
+    public void resolve(ComponentType componentType, ArtifactResolver resolver) throws ContributionException {
+
+        // Resolve componen type services and references
+        resolveContract(componentType.getServices(), resolver);
+        resolveContract(componentType.getReferences(), resolver);
     }
     
     public void optimize(ComponentType model) throws ContributionException {

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=525722&r1=525721&r2=525722
==============================================================================
--- 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 Wed Apr  4 23:25:02 2007
@@ -22,6 +22,7 @@
 import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
 import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
 
+
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
@@ -37,6 +38,7 @@
 import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.assembly.CompositeReference;
 import org.apache.tuscany.assembly.CompositeService;
+import org.apache.tuscany.assembly.ConstrainingType;
 import org.apache.tuscany.assembly.Contract;
 import org.apache.tuscany.assembly.Implementation;
 import org.apache.tuscany.assembly.Property;
@@ -233,7 +235,7 @@
                             contract.setCallback(callback);
                             readPolicies(callback, reader);
     
-                        } else if (OPERATION.equals(name)) {
+                        } else if (OPERATION_QNAME.equals(name)) {
     
                             // Read an <operation>
                             Operation operation = factory.createOperation();
@@ -244,6 +246,14 @@
                             } else {
                                 readPolicies(contract, operation, reader);
                             }
+                        } else if (IMPLEMENTATION_COMPOSITE_QNAME.equals(name)) {
+                            
+                            // Read an implementation.composite
+                            Composite implementation = factory.createComposite();
+                            implementation.setName(getQName(reader, NAME));
+                            implementation.setUnresolved(true);
+                            component.setImplementation(implementation);
+                            
                         } else {
     
                             // Read an extension element
@@ -316,11 +326,39 @@
         }
     }
     
-    public void resolve(Composite model, ArtifactResolver resolver) throws ContributionException {
-        // TODO Auto-generated method stub
+    public void resolve(Composite composite, ArtifactResolver resolver) throws ContributionException {
+        
+        // Resolve constraining type
+        ConstrainingType constrainingType = composite.getConstrainingType(); 
+        constrainingType = resolver.resolve(ConstrainingType.class, constrainingType); 
+        composite.setConstrainingType(constrainingType);
+        
+        // Resolve includes in the composite
+        for (int i = 0, n = composite.getIncludes().size(); i < n; i++) {
+            Composite include = composite.getIncludes().get(i);
+            include = resolver.resolve(Composite.class, include);
+            composite.getIncludes().set(i, include);
+        }
+        
+        // Resolve component implementations, services and references 
+        for (Component component: composite.getComponents()) {
+            constrainingType = component.getConstrainingType(); 
+            constrainingType = resolver.resolve(ConstrainingType.class, constrainingType); 
+            component.setConstrainingType(constrainingType);
+
+            Implementation implementation = component.getImplementation();
+            implementation = resolver.resolve(Implementation.class, implementation);
+            component.setImplementation(implementation);
+            
+            resolveContract(component.getServices(), resolver);
+            resolveContract(component.getReferences(), resolver);
+        }
         
+        // Resolve composite services and references
+        resolveContract(composite.getServices(), resolver);
+        resolveContract(composite.getReferences(), resolver);
     }
-    
+
     public void optimize(Composite model) throws ContributionException {
         // TODO Auto-generated method stub
         

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=525722&r1=525721&r2=525722
==============================================================================
--- 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 Wed Apr  4 23:25:02 2007
@@ -170,8 +170,11 @@
         }
     }
     
-    public void resolve(ConstrainingType model, ArtifactResolver resolver) throws ContributionException {
-        // TODO Auto-generated method stub
+    public void resolve(ConstrainingType constrainingType, ArtifactResolver resolver) throws ContributionException {
+
+        // Resolve component type services and references
+        resolveAbstractContract(constrainingType.getServices(), resolver);
+        resolveAbstractContract(constrainingType.getReferences(), resolver);
     }
     
     public void optimize(ConstrainingType model) throws ContributionException {

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=525722&r1=525721&r2=525722
==============================================================================
--- 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 Wed Apr  4 23:25:02 2007
@@ -34,7 +34,6 @@
 import org.apache.tuscany.assembly.CompositeService;
 import org.apache.tuscany.assembly.Multiplicity;
 import org.apache.tuscany.assembly.Property;
-import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
 import org.apache.tuscany.assembly.util.CompositeUtil;
 import org.apache.tuscany.assembly.util.PrintUtil;
 import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;

Added: 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=auto&rev=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ResolveTestCase.java Wed Apr  4 23:25:02 2007
@@ -0,0 +1,103 @@
+/*
+ * 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;
+import org.apache.tuscany.services.spi.contribution.StAXArtifactProcessorRegistry;
+
+/**
+ * Test the resolving SCA XML assemblies.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ResolveTestCase extends TestCase {
+
+    private XMLInputFactory inputFactory;
+    private StAXArtifactProcessorRegistry 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().getClassLoader().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().getClassLoader().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);
+        
+        assertEquals(composite.getConstrainingType(), constrainingType);
+        assertEquals(composite.getComponents().get(0).getConstrainingType(), constrainingType);
+    }
+
+    public void testResolveComposite() throws Exception {
+        DefaultArtifactResolver resolver = new DefaultArtifactResolver();
+        
+        InputStream is = getClass().getClassLoader().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().getClassLoader().getResourceAsStream("TestAllCalculator.composite");
+        compositeReader = new CompositeProcessor(registry);
+        reader = inputFactory.createXMLStreamReader(is);
+        Composite composite = compositeReader.read(reader);
+        is.close();
+        
+        compositeReader.resolve(composite, resolver);
+        
+        assertEquals(composite.getComponents().get(2).getImplementation(), nestedComposite);
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/Calculator.composite?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/Calculator.composite (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/Calculator.composite Wed Apr  4 23:25:02 2007
@@ -18,7 +18,7 @@
  * under the License.    
 -->
 <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
-	xmlns:calc="http://sample.calculator"
+	xmlns:calc="http://calc"
 	name="calc:Calculator">
 
     <service name="CalculatorService" promote="CalculatorServiceComponent">

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/CalculatorComponent.constrainingType
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/CalculatorComponent.constrainingType?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/CalculatorComponent.constrainingType (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/CalculatorComponent.constrainingType Wed Apr  4 23:25:02 2007
@@ -18,7 +18,7 @@
  * under the License.
 -->
 <constrainingType xmlns="http://www.osoa.org/xmlns/sca/1.0"
-	xmlns:calc="http://sample.calculator"
+	xmlns:calc="http://calc"
 	name="calc:CalculatorComponent">
 
   <service name="CalculatorService">

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/TestAllCalculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/TestAllCalculator.composite?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/TestAllCalculator.composite (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/resources/TestAllCalculator.composite Wed Apr  4 23:25:02 2007
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<composite autowire="false" constrainingType="tns:Calculator" local="true" name="tns:TestAllCalculator" policySets="sns:secure"
+<composite autowire="false" constrainingType="tns:CalculatorComponent" local="true" name="tns:TestAllCalculator" policySets="sns:secure"
     requires="cns:confidentiality" targetNamespace="http://calc" xmlns:tns="http://calc"
     xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -24,7 +24,7 @@
         </callback>
     </service>
 
-    <component name="CalculatorServiceComponent" autowire="false" constrainingType="tns:CalculatorServiceComponent"
+    <component name="CalculatorServiceComponent" autowire="false" constrainingType="tns:CalculatorComponent"
         policySets="sns:secure" requires="cns:confidentiality">
         <service name="CalculatorService" policySets="sns:secure" requires="cns:confidentiality">
             <interface.java interface="calculator.CalculatorService" callbackInterface="calculator.CalculatorCallback" />
@@ -50,6 +50,13 @@
         <implementation.java class="calculator.AddServiceImpl" />
     </component>
 
+    <component name="NestedCompositeComponent">
+        <service name="CalculatorService">
+            <interface.java interface="calculator.CalculatorService" />
+        </service>
+        <implementation.composite name="tns:Calculator" />
+    </component>
+
     <component name="SubtractServiceComponent">
         <implementation.java class="calculator.SubtractServiceImpl" />
     </component>

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/CompositeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/CompositeImpl.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/CompositeImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/CompositeImpl.java Wed Apr  4 23:25:02 2007
@@ -72,4 +72,18 @@
         this.name = name;
     }
 
+    @Override
+    public int hashCode() {
+        return String.valueOf(name).hashCode();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this)
+            return true;
+        else if (obj instanceof Composite && name.equals(((Composite)obj).getName()))
+             return true;
+        else
+            return false;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/ConstrainingTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/ConstrainingTypeImpl.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/ConstrainingTypeImpl.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/impl/ConstrainingTypeImpl.java Wed Apr  4 23:25:02 2007
@@ -87,4 +87,19 @@
         }
         return true;
     }
+
+    @Override
+    public int hashCode() {
+        return String.valueOf(name).hashCode();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this)
+            return true;
+        else if (obj instanceof ConstrainingType && name.equals(((ConstrainingType)obj).getName()))
+             return true;
+        else
+            return false;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactResolver.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactResolver.java Wed Apr  4 23:25:02 2007
@@ -19,10 +19,6 @@
 
 package org.apache.tuscany.services.spi.contribution;
 
-import java.net.URL;
-import java.util.Map;
-
-import org.apache.tuscany.services.contribution.model.Contribution;
 
 
 /**
@@ -44,41 +40,13 @@
  * @version $Rev$ $Date$
  */
 public interface ArtifactResolver {
+
     /**
-     * Resolve an artifact by the qualified name
-     * 
-     * @param contribution the model of the contribution
-     * @param modelClass The java type of the artifact 
-     * @param namespace The namespace of the artifact
-     * @param name The name of the artifact
-     * @param attributes Additional attributes that can be used to constrain the
-     *            resolution
-     * @param context The deployment context
-     * @return The resolved artifact
+     * Resolve an artifact.
+     * @param modelClass the type of artifact
+     * @param unresolved the unresolved artifact
+     * @return the resolved artifact
      */
-    <T> T resolve(Contribution contribution,
-                  Class<T> modelClass,
-                  String namespace,
-                  String name,
-                  Map attributes/*,
-                  DeploymentContext context*/);
+    <T> T resolve(Class<T> modelClass, T unresolved);
     
-    /**
-     * Resolve an artifact by the URI. Some typical use cases are:
-     * <ul>
-     * <li>Reference a XML schema using
-     * {http://www.w3.org/2001/XMLSchema-instance}schemaLocation or
-     * <li>Reference a list of WSDLs using
-     * {http://www.w3.org/2004/08/wsdl-instance}wsdlLocation
-     * </ul>
-     * @param targetNamespace The target namespace of the referenced artifact,
-     *            if the targetNamespace is null, then it's not specified
-     * @param location The URI of the referenced artifact, it can be absolute or
-     *            relative
-     * @param baseURI The URI of the owning artifact
-     * 
-     * @return The URI of the resolved artifact
-     */
-    URL resolve(Contribution contribution, String targetNamespace, String location, String baseURI);
-
 }

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java?view=auto&rev=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java Wed Apr  4 23:25:02 2007
@@ -0,0 +1,36 @@
+/*
+ * 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.services.spi.contribution;
+
+import java.util.HashMap;
+
+/**
+ * A default implementation of an artifact resolver, based on a map.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultArtifactResolver extends HashMap<Object, Object> implements ArtifactResolver {
+    private static final long serialVersionUID = -7826976465762296634L;
+
+    public <T> T resolve(Class<T> modelClass, T unresolved) {
+        return modelClass.cast(get(unresolved));
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactResolver.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/idl-java/src/main/java/org/apache/tuscany/idl/java/impl/JavaInterfaceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/idl-java/src/main/java/org/apache/tuscany/idl/java/impl/JavaInterfaceImpl.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/idl-java/src/main/java/org/apache/tuscany/idl/java/impl/JavaInterfaceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/idl-java/src/main/java/org/apache/tuscany/idl/java/impl/JavaInterfaceImpl.java Wed Apr  4 23:25:02 2007
@@ -58,4 +58,18 @@
         return getName();
     }
 
+    @Override
+    public int hashCode() {
+        return String.valueOf(className).hashCode();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this)
+            return true;
+        else if (obj instanceof JavaInterface && className.equals(((JavaInterface)obj).getName()))
+             return true;
+        else
+            return false;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceProcessor.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceProcessor.java Wed Apr  4 23:25:02 2007
@@ -25,8 +25,8 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import org.apache.tuscany.idl.WSDLFactory;
-import org.apache.tuscany.idl.WSDLInterface;
+import org.apache.tuscany.idl.wsdl.WSDLFactory;
+import org.apache.tuscany.idl.wsdl.WSDLInterface;
 import org.apache.tuscany.idl.wsdl.impl.DefaultWSDLFactory;
 import org.apache.tuscany.services.spi.contribution.ArtifactResolver;
 import org.apache.tuscany.services.spi.contribution.ContributionException;

Added: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java?view=auto&rev=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java (added)
+++ incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java Wed Apr  4 23:25:02 2007
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.idl.wsdl;
+
+/**
+ * Factory for the WSDL model.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface WSDLFactory {
+
+    /**
+     * Creates a new WSDL interface.
+     * 
+     * @return a new WSDL interface
+     */
+    WSDLInterface createWSDLInterface();
+
+}

Propchange: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java?view=auto&rev=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java (added)
+++ incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java Wed Apr  4 23:25:02 2007
@@ -0,0 +1,62 @@
+/*
+ * 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.idl.wsdl;
+
+import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.idl.Interface;
+
+
+/**
+ * Represents a WSDL interface.
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface WSDLInterface extends Interface {
+
+    /**
+     * Returns the name of the WSDL interface.
+     * 
+     * @return the name of the WSDL interface
+     */
+    QName getName();
+
+    /**
+     * Sets the name of the WSDL interface.
+     * 
+     * @param className the name of the WSDL interface
+     */
+    void setName(QName interfaceName);
+
+    /**
+     * Returns the WSDL interface portType.
+     * 
+     * @return the WSDL interface portType
+     */
+    PortType getPortType();
+
+    /**
+     * Sets the WSDL interface portType
+     * 
+     * @param portType the WSDL interface portType
+     */
+    void setPortType(PortType portType);
+
+}

Propchange: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/WSDLInterface.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/DefaultWSDLFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/DefaultWSDLFactory.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/DefaultWSDLFactory.java (original)
+++ incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/DefaultWSDLFactory.java Wed Apr  4 23:25:02 2007
@@ -18,8 +18,8 @@
  */
 package org.apache.tuscany.idl.wsdl.impl;
 
-import org.apache.tuscany.idl.WSDLFactory;
-import org.apache.tuscany.idl.WSDLInterface;
+import org.apache.tuscany.idl.wsdl.WSDLFactory;
+import org.apache.tuscany.idl.wsdl.WSDLInterface;
 
 /**
  * A factory for the WSDL model.

Modified: incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/WSDLInterfaceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/WSDLInterfaceImpl.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/WSDLInterfaceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/idl-wsdl/src/main/java/org/apache/tuscany/idl/wsdl/impl/WSDLInterfaceImpl.java Wed Apr  4 23:25:02 2007
@@ -21,8 +21,8 @@
 import javax.wsdl.PortType;
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.idl.WSDLInterface;
 import org.apache.tuscany.idl.impl.InterfaceImpl;
+import org.apache.tuscany.idl.wsdl.WSDLInterface;
 
 /**
  * Represents a WSDL interface.
@@ -31,7 +31,7 @@
  */
 public class WSDLInterfaceImpl extends InterfaceImpl implements WSDLInterface {
 
-    private QName interfaceName;
+    private QName name;
     private PortType portType;
 
     public WSDLInterfaceImpl() {
@@ -40,7 +40,7 @@
 
     public QName getName() {
         if (isUnresolved()) {
-            return interfaceName;
+            return name;
         } else {
             return portType.getQName();
         }
@@ -50,7 +50,7 @@
         if (!isUnresolved()) {
             throw new IllegalStateException();
         }
-        this.interfaceName = interfaceName;
+        this.name = interfaceName;
     }
 
     public PortType getPortType() {
@@ -61,4 +61,18 @@
         this.portType = portType;
     }
 
+    @Override
+    public int hashCode() {
+        return String.valueOf(name).hashCode();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this)
+            return true;
+        else if (obj instanceof WSDLInterface && name.equals(((WSDLInterface)obj).getName()))
+             return true;
+        else
+            return false;
+    }
 }

Modified: incubator/tuscany/java/sca/modules/impl-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/impl-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java?view=diff&rev=525722&r1=525721&r2=525722
==============================================================================
--- incubator/tuscany/java/sca/modules/impl-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java (original)
+++ incubator/tuscany/java/sca/modules/impl-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java Wed Apr  4 23:25:02 2007
@@ -54,4 +54,18 @@
         this.javaClass = javaClass;
     }
 
+    @Override
+    public int hashCode() {
+        return String.valueOf(className).hashCode();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this)
+            return true;
+        else if (obj instanceof JavaImplementation && className.equals(((JavaImplementation)obj).getName()))
+             return true;
+        else
+            return false;
+    }
 }



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