You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/10/05 18:18:10 UTC

svn commit: r582332 - in /incubator/tuscany/java/sca/modules: binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/ binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/ interface-wsdl-xml/src/main/java/org/apache/tuscan...

Author: rfeng
Date: Fri Oct  5 09:18:08 2007
New Revision: 582332

URL: http://svn.apache.org/viewvc?rev=582332&view=rev
Log:
Use WSDLDefinition to resolve inline schemas

Added:
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd   (with props)
Modified:
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
    incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java Fri Oct  5 09:18:08 2007
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Method;
+import java.net.URI;
 import java.net.URL;
 import java.util.List;
 import java.util.Map;
@@ -42,6 +43,7 @@
 import javax.wsdl.Types;
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.UnknownExtensibilityElement;
 import javax.wsdl.extensions.schema.Schema;
 import javax.wsdl.xml.WSDLLocator;
 import javax.wsdl.xml.WSDLReader;
@@ -54,18 +56,25 @@
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
 import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
+import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
 import org.apache.tuscany.sca.interfacedef.wsdl.impl.InvalidWSDLException;
 import org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLOperationIntrospectorImpl;
+import org.apache.tuscany.sca.interfacedef.wsdl.xml.WSDLModelResolver;
 import org.apache.tuscany.sca.interfacedef.wsdl.xml.XMLDocumentHelper;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.IntentAttachPoint;
+import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.apache.ws.java2wsdl.Java2WSDLBuilder;
 import org.osoa.sca.annotations.OneWay;
+import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
 import org.xml.sax.InputSource;
 
 /**
@@ -76,7 +85,8 @@
     /**
      * Create a WSDLInterfaceContract from a JavaInterfaceContract
      */
-    public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract, WebServiceBinding wsBinding) {
+    public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract,
+                                                                    WebServiceBinding wsBinding) {
         JavaInterface iface = (JavaInterface)contract.getInterface();
         Definition def = Java2WSDLHelper.createDefinition(iface.getJavaClass(), wsBinding);
 
@@ -96,14 +106,13 @@
         PortType portType = (PortType)def.getAllPortTypes().values().iterator().next();
         wsdlInterface.setPortType(portType);
 
-        readInlineSchemas(def, wsdlDefinition.getInlinedSchemas());
+        readInlineSchemas(wsdlFactory, wsdlDefinition, def, new XmlSchemaCollection());
 
         try {
             for (Operation op : iface.getOperations()) {
                 javax.wsdl.Operation wsdlOp = portType.getOperation(op.getName(), null, null);
                 WSDLOperationIntrospectorImpl opx =
-                    new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition.getInlinedSchemas(), null,
-                                                      null);
+                    new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, null);
 
                 Operation clonedOp = (Operation)op.clone();
                 clonedOp.setDataBinding(null);
@@ -115,8 +124,8 @@
                 for (DataType<?> dt : clonedOp.getInputType().getLogical()) {
                     dt.setDataBinding(null);
                 }
-                
-                if (clonedOp.getOutputType() != null ){
+
+                if (clonedOp.getOutputType() != null) {
                     clonedOp.getOutputType().setDataBinding(null);
                 }
                 for (DataType<?> dt : clonedOp.getFaultTypes()) {
@@ -136,29 +145,92 @@
         return wsdlContract;
     }
 
-    protected static void readInlineSchemas(Definition definition, XmlSchemaCollection schemaCollection) {
+    private static Document promote(Element element) {
+        Document doc = (Document)element.getOwnerDocument().cloneNode(false);
+        Element schema = (Element)doc.importNode(element, true);
+        doc.appendChild(schema);
+        Node parent = element.getParentNode();
+        while (parent instanceof Element) {
+            Element root = (Element)parent;
+            NamedNodeMap nodeMap = root.getAttributes();
+            for (int i = 0; i < nodeMap.getLength(); i++) {
+                Attr attr = (Attr)nodeMap.item(i);
+                String name = attr.getName();
+                if ("xmlns".equals(name) || name.startsWith("xmlns:")) {
+                    if (schema.getAttributeNode(name) == null) {
+                        schema.setAttributeNodeNS((Attr)doc.importNode(attr, true));
+                    }
+                }
+            }
+            parent = parent.getParentNode();
+        }
+        doc.setDocumentURI(element.getOwnerDocument().getDocumentURI());
+        return doc;
+    }
+
+    /**
+     * Populate the inline schemas including those from the imported definitions
+     * 
+     * @param definition
+     * @param schemaCollection
+     */
+    private static void readInlineSchemas(WSDLFactory wsdlFactory,
+                                          WSDLDefinition wsdlDefinition,
+                                          Definition definition,
+                                          XmlSchemaCollection schemaCollection) {
         Types types = definition.getTypes();
         if (types != null) {
+            int index = 0;
             for (Object ext : types.getExtensibilityElements()) {
-                if (ext instanceof Schema) {
-                    Element element = ((Schema)ext).getElement();
-                    schemaCollection.setBaseUri(((Schema)ext).getDocumentBaseURI());
-                    schemaCollection.read(element, definition.getDocumentBaseURI());
+                ExtensibilityElement extElement = (ExtensibilityElement)ext;
+                Element element = null;
+                if (WSDLModelResolver.XSD_QNAME_LIST.contains(extElement.getElementType())) {
+                    if (extElement instanceof Schema) {
+                        element = ((Schema)extElement).getElement();
+                    } else if (extElement instanceof UnknownExtensibilityElement) {
+                        element = ((UnknownExtensibilityElement)extElement).getElement();
+                    }
+                }
+                if (element != null) {
+                    Document doc = promote(element);
+                    XSDefinition xsDefinition = wsdlFactory.createXSDefinition();
+                    xsDefinition.setUnresolved(true);
+                    xsDefinition.setNamespace(element.getAttribute("targetNamespace"));
+                    xsDefinition.setDocument(doc);
+                    xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index));
+                    loadXSD(schemaCollection, xsDefinition);
+                    wsdlDefinition.getXmlSchemas().add(xsDefinition);
+                    index++;
                 }
             }
         }
         for (Object imports : definition.getImports().values()) {
-            List<?> impList = (List<?>)imports;
+            List impList = (List)imports;
             for (Object i : impList) {
                 javax.wsdl.Import anImport = (javax.wsdl.Import)i;
-                // Read inline schemas
+                // Read inline schemas 
                 if (anImport.getDefinition() != null) {
-                    readInlineSchemas(anImport.getDefinition(), schemaCollection);
+                    readInlineSchemas(wsdlFactory, wsdlDefinition, anImport.getDefinition(), schemaCollection);
                 }
             }
         }
     }
 
+    private static void loadXSD(XmlSchemaCollection schemaCollection, XSDefinition definition) {
+        if (definition.getSchema() != null) {
+            return;
+        }
+        if (definition.getDocument() != null) {
+            String uri = null;
+            if (definition.getLocation() != null) {
+                uri = definition.getLocation().toString();
+            }
+            XmlSchema schema = schemaCollection.read(definition.getDocument(), uri, null);
+            definition.setSchemaCollection(schemaCollection);
+            definition.setSchema(schema);
+        }
+    }
+
     /**
      * Create a WSDL4J Definition object from a Java interface
      */
@@ -183,7 +255,7 @@
 
             WSDLLocatorImpl locator = new WSDLLocatorImpl(new ByteArrayInputStream(os.toByteArray()));
             Definition definition = reader.readWSDL(locator);
-            
+
             processSOAPVersion(definition, wsBinding);
             processNoArgAndVoidReturnMethods(definition, javaInterface);
 
@@ -196,18 +268,18 @@
 
     private static void processSOAPVersion(Definition definition, WebServiceBinding wsBinding) {
         if (requiresSOAP12(wsBinding)) {
-             removePort(definition, "SOAP11port_http");
-         } else {
-             removePort(definition, "SOAP12port_http");
-         }
+            removePort(definition, "SOAP11port_http");
+        } else {
+            removePort(definition, "SOAP12port_http");
+        }
     }
 
     private static void removePort(Definition definition, String portNameSuffix) {
         Service service = (Service)definition.getServices().values().iterator().next();
-        Map<?,?> ports = service.getPorts();
+        Map<?, ?> ports = service.getPorts();
         for (Object o : ports.keySet()) {
             if (((String)o).endsWith(portNameSuffix)) {
-                Port p = (Port) ports.remove(o);
+                Port p = (Port)ports.remove(o);
                 definition.removeBinding(p.getBinding().getQName());
                 break;
             }
@@ -215,7 +287,7 @@
     }
 
     private static final QName SOAP12_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0", "soap12");
-    
+
     private static boolean requiresSOAP12(WebServiceBinding wsBinding) {
         if (wsBinding instanceof IntentAttachPoint) {
             List<Intent> intents = ((IntentAttachPoint)wsBinding).getRequiredIntents();
@@ -264,12 +336,12 @@
                 Message inputMsg = input.getMessage();
                 if (inputMsg.getParts().isEmpty()) {
                     // create wrapper element and add it to the schema DOM
-                    Element wrapper = document.createElementNS("http://www.w3.org/2001/XMLSchema",
-                                                               xsPrefix + ":element");
+                    Element wrapper =
+                        document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element");
                     wrapper.setAttribute("name", opName);
                     schema.appendChild(wrapper);
-                    Element complexType = document.createElementNS("http://www.w3.org/2001/XMLSchema",
-                                                                   xsPrefix + ":complexType");
+                    Element complexType =
+                        document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType");
                     wrapper.appendChild(complexType);
 
                     // create new part for the wrapper and add it to the message
@@ -292,12 +364,12 @@
                 if (!isOneWay) {
                     // create wrapper element and add it to the schema DOM
                     String msgName = opName + "Response";
-                    Element wrapper = document.createElementNS("http://www.w3.org/2001/XMLSchema",
-                                                               xsPrefix + ":element");
+                    Element wrapper =
+                        document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element");
                     wrapper.setAttribute("name", msgName);
                     schema.appendChild(wrapper);
-                    Element complexType = document.createElementNS("http://www.w3.org/2001/XMLSchema",
-                                                                   xsPrefix + ":complexType");
+                    Element complexType =
+                        document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType");
                     wrapper.appendChild(complexType);
 
                     // create new part for the wrapper

Modified: incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java Fri Oct  5 09:18:08 2007
@@ -269,9 +269,7 @@
                 WSDLInterfaceContract interfaceContract = wsdlFactory.createWSDLInterfaceContract();
                 WSDLInterface wsdlInterface;
                 try {
-                    wsdlInterface = wsdlFactory.createWSDLInterface(portType,
-                                                                          wsdlDefinition.getInlinedSchemas(),
-                                                                          resolver);
+                    wsdlInterface = wsdlFactory.createWSDLInterface(portType, wsdlDefinition, resolver);
                 } catch (InvalidInterfaceException e) {
                     throw new ContributionResolveException(e);
                 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java Fri Oct  5 09:18:08 2007
@@ -149,7 +149,7 @@
                         // Introspect the WSDL portType and add the resulting
                         // WSDLInterface to the resolver
                         try {
-                            wsdlInterface = wsdlFactory.createWSDLInterface(portType, wsdlDefinition.getInlinedSchemas(), resolver);
+                            wsdlInterface = wsdlFactory.createWSDLInterface(portType, wsdlDefinition, resolver);
                         } catch (InvalidInterfaceException e) {
                             throw new ContributionResolveException(e);
                         }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java Fri Oct  5 09:18:08 2007
@@ -239,6 +239,7 @@
                 imp.setDefinition(d.getDefinition());
                 imp.setLocationURI(d.getDefinition().getDocumentBaseURI());
                 facade.addImport(imp);
+                aggregated.getXmlSchemas().addAll(d.getXmlSchemas());
             }
         }
         aggregated.setDefinition(facade);
@@ -383,7 +384,7 @@
                     xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index));
                     XSDefinition resolved =
                         contribution.getModelResolver().resolveModel(XSDefinition.class, xsDefinition);
-                    wsdlDefinition.setInlinedSchemas(resolved.getSchemaCollection());
+                    wsdlDefinition.getXmlSchemas().add(resolved);
                     index++;
                 }
             }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLInterfaceIntrospectorTestCase.java Fri Oct  5 09:18:08 2007
@@ -61,7 +61,7 @@
 
     @SuppressWarnings("unchecked")
     public final void testIntrospectPortType() throws InvalidInterfaceException {
-        WSDLInterface contract = wsdlFactory.createWSDLInterface(portType, definition.getInlinedSchemas(), resolver);
+        WSDLInterface contract = wsdlFactory.createWSDLInterface(portType, definition, resolver);
         Assert.assertEquals(contract.getName().getLocalPart(), "StockQuotePortType");
         List<Operation> operations = contract.getOperations();
         Assert.assertEquals(1, operations.size());

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WSDLOperationIntrospectorTestCase.java Fri Oct  5 09:18:08 2007
@@ -53,7 +53,7 @@
         PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
         Operation operation = portType.getOperation("getLastTradePrice", null, null);
 
-        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
 
         DataType<List<DataType>> inputType = op.getInputType();
         Assert.assertEquals(1, inputType.getLogical().size());
@@ -83,12 +83,12 @@
         PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
 
         Operation operation = portType.getOperation("getLastTradePrice1", null, null);
-        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
         Assert.assertFalse(op.isWrapperStyle());
         Assert.assertEquals(1, op.getInputType().getLogical().size());
 
         operation = portType.getOperation("getLastTradePrice2", null, null);
-        op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
         Assert.assertFalse(op.isWrapperStyle());
         Assert.assertEquals(2, op.getInputType().getLogical().size());
     }
@@ -101,7 +101,7 @@
         PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
 
         Operation operation = portType.getOperation("getLastTradePrice", null, null);
-        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
 
         try {
             op.isWrapperStyle();

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/introspect/WrapperStyleOperationTestCase.java Fri Oct  5 09:18:08 2007
@@ -45,7 +45,7 @@
         definition = resolver.resolveModel(WSDLDefinition.class, definition);
         PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
         Operation operation = portType.getOperation("getLastTradePrice", null, null);
-        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
         Assert.assertTrue(op.isWrapperStyle());
         Assert.assertEquals(1, op.getWrapper().getInputChildElements().size());
         Assert.assertEquals(1, op.getWrapper().getOutputChildElements().size());
@@ -58,10 +58,10 @@
         definition = resolver.resolveModel(WSDLDefinition.class, definition);
         PortType portType = definition.getDefinition().getPortType(PORTTYPE_NAME);
         Operation operation = portType.getOperation("getLastTradePrice1", null, null);
-        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
         Assert.assertFalse(op.isWrapperStyle());
         operation = portType.getOperation("getLastTradePrice2", null, null);
-        op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition.getInlinedSchemas(), "org.w3c.dom.Node", resolver);
+        op = new WSDLOperationIntrospectorImpl(wsdlFactory, operation, definition, "org.w3c.dom.Node", resolver);
         Assert.assertFalse(op.isWrapperStyle());
     }
 

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessorTestCase.java Fri Oct  5 09:18:08 2007
@@ -77,6 +77,8 @@
         Assert.assertNotNull(((Import)imports.get(0)).getDefinition());
         Assert.assertNotNull(resolved.getDefinition().getPortType(new QName("http://helloworld", "HelloWorld")));
         Assert.assertNotNull(resolved.getDefinition().getService(new QName("http://helloworld", "HelloWorldService")));
+        
+        assertNotNull(resolved.getXmlSchemaType(new QName("http://greeting", "Name")));
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/wsdl/helloworld-interface.wsdl Fri Oct  5 09:18:08 2007
@@ -25,7 +25,10 @@
         <schema elementFormDefault="qualified" targetNamespace="http://helloworld"
             xmlns="http://www.w3.org/2001/XMLSchema" xmlns:g="http://greeting">
 
-            <import namespace="http://greeting" schemaLocation="../xsd/greeting.xsd" />
+            <!-- 
+                <import namespace="http://greeting" schemaLocation="../xsd/greeting.xsd" />
+            -->
+            <include schemaLocation="../xsd/helloworld.xsd" />
 
             <element name="getGreetings">
                 <complexType>

Added: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd?rev=582332&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd (added)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd Fri Oct  5 09:18:08 2007
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+    http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<schema targetNamespace="http://helloworld" xmlns="http://www.w3.org/2001/XMLSchema">
+    <import namespace="http://greeting" schemaLocation="greeting.xsd" />
+</schema>
\ No newline at end of file

Propchange: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/test/resources/xsd/helloworld.xsd
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLDefinition.java Fri Oct  5 09:18:08 2007
@@ -23,9 +23,11 @@
 import java.util.List;
 
 import javax.wsdl.Definition;
+import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.Base;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
 
 /**
  * Represents a WSDL definition.
@@ -48,14 +50,6 @@
     void setDefinition(Definition definition);
     
     /**
-     * Returns a list of XML schemas inlined in this WSDL definition.
-     * @return
-     */
-    XmlSchemaCollection getInlinedSchemas();
-    
-    void setInlinedSchemas(XmlSchemaCollection schemaCollection);
-    
-    /**
      * Returns the namespace of this WSDL definition.
      * @return the namespace of this WSDL definition
      */
@@ -74,4 +68,8 @@
     
     URI getLocation();
     void setLocation(URI url);
+    
+    XmlSchemaElement getXmlSchemaElement(QName name);
+    XmlSchemaType getXmlSchemaType(QName name);
+    
 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/WSDLFactory.java Fri Oct  5 09:18:08 2007
@@ -22,7 +22,6 @@
 
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
 
 /**
  * Factory for the WSDL model.
@@ -44,7 +43,7 @@
      * @param portType the portType to inspect
      * @return a WSDLInterface corresponding to the WSDL portType
      */
-    WSDLInterface createWSDLInterface(PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException;
+    WSDLInterface createWSDLInterface(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException;
 
     /**
      * Creates the contents of a WSDL interface from a WSDL portType.
@@ -52,7 +51,7 @@
      * @param portType the portType to inspect
      * @return a WSDLInterface corresponding to the WSDL portType
      */
-    void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException;
+    void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException;
 
     /**
      * Creates a new WSDL definition.

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/XSDefinition.java Fri Oct  5 09:18:08 2007
@@ -21,9 +21,13 @@
 
 import java.net.URI;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.assembly.Base;
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
 import org.w3c.dom.Document;
 
 /**
@@ -83,4 +87,8 @@
      * @param document
      */
     void setDocument(Document document);
+
+    XmlSchemaElement getXmlSchemaElement(QName name);
+
+    XmlSchemaType getXmlSchemaType(QName name);
 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLDefinitionImpl.java Fri Oct  5 09:18:08 2007
@@ -24,10 +24,14 @@
 import java.util.List;
 
 import javax.wsdl.Definition;
+import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
 import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
+import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
 
 /**
  * Represents a WSDL definition.
@@ -39,7 +43,6 @@
     private Definition definition;
     private String namespace;
     private URI location;
-    private XmlSchemaCollection inlinedSchemas = new XmlSchemaCollection();
     private List<XSDefinition> schemas = new ArrayList<XSDefinition>();
     private boolean unresolved;
 
@@ -54,10 +57,6 @@
         this.definition = definition;
     }
 
-    public XmlSchemaCollection getInlinedSchemas() {
-        return inlinedSchemas;
-    }
-
     public boolean isUnresolved() {
         return unresolved;
     }
@@ -129,13 +128,6 @@
     }
 
     /**
-     * @param inlineSchemas the inlineSchemas to set
-     */
-    public void setInlinedSchemas(XmlSchemaCollection inlinedSchemas) {
-        this.inlinedSchemas = inlinedSchemas;
-    }
-
-    /**
      * @see java.lang.Object#hashCode()
      */
     @Override
@@ -170,6 +162,52 @@
         } else if (!namespace.equals(other.namespace))
             return false;
         return true;
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemaElement(javax.xml.namespace.QName)
+     */
+    public XmlSchemaElement getXmlSchemaElement(QName name) {
+        XmlSchemaCollection schemaCollection = null;
+        for (XSDefinition xsd : schemas) {
+            if (xsd.getSchemaCollection() != null) {
+                schemaCollection = xsd.getSchemaCollection();
+            }
+            XmlSchema schema = xsd.getSchema();
+            if (schema != null) {
+                XmlSchemaElement element = schema.getElementByName(name);
+                if (element != null) {
+                    return element;
+                }
+            }
+        }
+        if (schemaCollection != null) {
+            return schemaCollection.getElementByQName(name);
+        }
+        return null;
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition#getXmlSchemaType(javax.xml.namespace.QName)
+     */
+    public XmlSchemaType getXmlSchemaType(QName name) {
+        XmlSchemaCollection schemaCollection = null;
+        for (XSDefinition xsd : schemas) {
+            if (xsd.getSchemaCollection() != null) {
+                schemaCollection = xsd.getSchemaCollection();
+            }
+            XmlSchema schema = xsd.getSchema();
+            if (schema != null) {
+                XmlSchemaType type = schema.getTypeByName(name);
+                if (type != null) {
+                    return type;
+                }
+            }
+        }
+        if (schemaCollection != null) {
+            return schemaCollection.getTypeByQName(name);
+        }
+        return null;
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLFactoryImpl.java Fri Oct  5 09:18:08 2007
@@ -27,7 +27,6 @@
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
 import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
 
 /**
  * A factory for the WSDL model.
@@ -46,14 +45,14 @@
         return new WSDLInterfaceImpl();
     }
     
-    public WSDLInterface createWSDLInterface(PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException {
+    public WSDLInterface createWSDLInterface(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException {
         WSDLInterface wsdlInterface = createWSDLInterface();
-        introspector.introspectPortType(wsdlInterface, portType, inlineSchemas, resolver);
+        introspector.introspectPortType(wsdlInterface, portType, wsdlDefinition, resolver);
         return wsdlInterface;
     }
     
-    public void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidInterfaceException {
-        introspector.introspectPortType(wsdlInterface, portType, inlineSchemas, resolver);
+    public void createWSDLInterface(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidInterfaceException {
+        introspector.introspectPortType(wsdlInterface, portType, wsdlDefinition, resolver);
     }
     
     public WSDLDefinition createWSDLDefinition() {

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java Fri Oct  5 09:18:08 2007
@@ -26,9 +26,9 @@
 
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
 
 /**
  * Introspector for creating WSDLInterface definitions from WSDL PortTypes.
@@ -42,19 +42,19 @@
     }
 
     // FIXME: Do we want to deal with document-literal wrapped style based on the JAX-WS spec?
-    private List<Operation> introspectOperations(PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidWSDLException {
+    private List<Operation> introspectOperations(PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException {
         List<Operation> operations = new ArrayList<Operation>();
         for (Object o : portType.getOperations()) {
             javax.wsdl.Operation wsdlOp = (javax.wsdl.Operation)o;
-            WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, inlineSchemas, null, resolver);
+            WSDLOperationIntrospectorImpl op = new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, resolver);
             operations.add(op.getOperation());
         }
         return operations;
     }
 
-    public void introspectPortType(WSDLInterface wsdlInterface, PortType portType, XmlSchemaCollection inlineSchemas, ModelResolver resolver) throws InvalidWSDLException {
+    public void introspectPortType(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException {
         wsdlInterface.setPortType(portType);
-        wsdlInterface.getOperations().addAll(introspectOperations(portType, inlineSchemas, resolver));
+        wsdlInterface.getOperations().addAll(introspectOperations(portType, wsdlDefinition, resolver));
         // FIXME: set to Non-conversational for now
         wsdlInterface.setConversational(false);
     }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java Fri Oct  5 09:18:08 2007
@@ -42,9 +42,9 @@
 import org.apache.tuscany.sca.interfacedef.util.TypeInfo;
 import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
 import org.apache.tuscany.sca.interfacedef.util.XMLType;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
 import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.apache.ws.commons.schema.XmlSchemaComplexType;
 import org.apache.ws.commons.schema.XmlSchemaElement;
 import org.apache.ws.commons.schema.XmlSchemaObject;
@@ -62,7 +62,7 @@
 public class WSDLOperationIntrospectorImpl {
     private WSDLFactory wsdlFactory;
     private ModelResolver resolver;
-    private XmlSchemaCollection inlineSchemas;
+    private WSDLDefinition wsdlDefinition;
     private javax.wsdl.Operation operation;
     private Operation operationModel;
     private DataType<List<DataType>> inputType;
@@ -78,13 +78,13 @@
     public WSDLOperationIntrospectorImpl(
                          WSDLFactory wsdlFactory,
                          javax.wsdl.Operation operation,
-                         XmlSchemaCollection inlineSchemas,
+                         WSDLDefinition wsdlDefinition,
                          String dataBinding,
                          ModelResolver resolver) {
         super();
         this.wsdlFactory = wsdlFactory;
         this.operation = operation;
-        this.inlineSchemas = inlineSchemas;
+        this.wsdlDefinition = wsdlDefinition;
         this.resolver = resolver;
         this.dataBinding = dataBinding;
         this.wrapper = new Wrapper();
@@ -216,7 +216,8 @@
     }
     
     private XmlSchemaElement getElement(QName elementName) {
-        XmlSchemaElement element = inlineSchemas.getElementByQName(elementName);
+        
+        XmlSchemaElement element = wsdlDefinition.getXmlSchemaElement(elementName);
         if (element == null) {
             XSDefinition definition = wsdlFactory.createXSDefinition();
             definition.setUnresolved(true);
@@ -230,7 +231,7 @@
     }
     
     private XmlSchemaType getType(QName typeName) {
-        XmlSchemaType type = inlineSchemas.getTypeByQName(typeName);
+        XmlSchemaType type = wsdlDefinition.getXmlSchemaType(typeName);
         if (type == null) {
             XSDefinition definition = wsdlFactory.createXSDefinition();
             definition.setNamespace(typeName.getNamespaceURI());

Modified: incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java?rev=582332&r1=582331&r2=582332&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/XSDefinitionImpl.java Fri Oct  5 09:18:08 2007
@@ -21,9 +21,13 @@
 
 import java.net.URI;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaType;
 import org.w3c.dom.Document;
 
 /**
@@ -38,7 +42,7 @@
     private URI location;
     private Document document;
     private boolean unresolved;
-    
+
     protected XSDefinitionImpl() {
     }
 
@@ -57,7 +61,7 @@
     public void setUnresolved(boolean undefined) {
         this.unresolved = undefined;
     }
-    
+
     public String getNamespace() {
         if (isUnresolved()) {
             return namespace;
@@ -67,7 +71,7 @@
             return namespace;
         }
     }
-    
+
     public void setNamespace(String namespace) {
         if (!isUnresolved()) {
             throw new IllegalStateException();
@@ -75,7 +79,7 @@
             this.namespace = namespace;
         }
     }
-    
+
     /**
      * @return the location
      */
@@ -154,4 +158,32 @@
             return false;
         return true;
     }
+
+    public XmlSchemaElement getXmlSchemaElement(QName name) {
+        if (schema != null) {
+            XmlSchemaElement element = schema.getElementByName(name);
+            if (element != null) {
+                return element;
+            }
+        }
+
+        if (schemaCollection != null) {
+            return schemaCollection.getElementByQName(name);
+        }
+        return null;
+    }
+
+    public XmlSchemaType getXmlSchemaType(QName name) {
+        if (schema != null) {
+            XmlSchemaType type = schema.getTypeByName(name);
+            if (type != null) {
+                return type;
+            }
+        }
+        if (schemaCollection != null) {
+            return schemaCollection.getTypeByQName(name);
+        }
+        return null;
+    }
+
 }



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