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