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/12/05 21:31:59 UTC

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

Author: rfeng
Date: Wed Dec  5 12:31:58 2007
New Revision: 601507

URL: http://svn.apache.org/viewvc?rev=601507&view=rev
Log:
1st cut of support to import external WSDL

Modified:
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.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/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLOperationIntrospectorImpl.java

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.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/Axis2ServiceClient.java?rev=601507&r1=601506&r2=601507&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java Wed Dec  5 12:31:58 2007
@@ -25,6 +25,7 @@
 import javax.wsdl.Binding;
 import javax.wsdl.BindingOperation;
 import javax.wsdl.Definition;
+import javax.wsdl.Import;
 import javax.wsdl.Port;
 import javax.wsdl.Service;
 import javax.wsdl.extensions.soap.SOAPAddress;
@@ -159,6 +160,32 @@
     }
     
     /**
+     * Workaround for https://issues.apache.org/jira/browse/AXIS2-3205
+     * @param definition
+     * @param serviceName
+     * @return
+     */
+    private static Definition getDefinition(Definition definition, QName serviceName) {
+        if (definition == null) {
+            return null;
+        }
+        Object service = definition.getServices().get(serviceName);
+        if (service != null) {
+            return definition;
+        }
+        for (Object i : definition.getImports().values()) {
+            List<Import> imports = (List<Import>)i;
+            for (Import imp : imports) {
+                Definition d = getDefinition(imp.getDefinition(), serviceName);
+                if (d != null) {
+                    return d;
+                }
+            }
+        }
+        return definition;
+    }
+    
+    /**
      * This method is copied from AxisService.createClientSideAxisService to
      * work around http://issues.apache.org/jira/browse/WSCOMMONS-228
      * 
@@ -174,12 +201,13 @@
                                                           QName wsdlServiceName,
                                                           String portName,
                                                           Options options) throws AxisFault {
+        Definition def = getDefinition(wsdlDefinition, wsdlServiceName);
         WSDL11ToAxisServiceBuilder serviceBuilder =
-                new WSDL11ToAxisServiceBuilder(wsdlDefinition, wsdlServiceName, portName);
+                new WSDL11ToAxisServiceBuilder(def, wsdlServiceName, portName);
         serviceBuilder.setServerSide(false);
         // [rfeng] Add a custom resolver to work around WSCOMMONS-228
-        serviceBuilder.setCustomResolver(new URIResolverImpl(wsdlDefinition));
-        serviceBuilder.setBaseUri(wsdlDefinition.getDocumentBaseURI());
+        serviceBuilder.setCustomResolver(new URIResolverImpl(def));
+        serviceBuilder.setBaseUri(def.getDocumentBaseURI());
         // [rfeng]
         AxisService axisService = serviceBuilder.populateService();
         AxisEndpoint axisEndpoint = (AxisEndpoint) axisService.getEndpoints()

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.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/Axis2ServiceProvider.java?rev=601507&r1=601506&r2=601507&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java Wed Dec  5 12:31:58 2007
@@ -35,6 +35,7 @@
 import javax.wsdl.Definition;
 import javax.wsdl.Port;
 import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap12.SOAP12Address;
 import javax.xml.namespace.QName;
 import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLInputFactory;
@@ -377,6 +378,10 @@
             for (Object extension : wsdlPortExtensions) {
                 if (extension instanceof SOAPAddress) {
                     return URI.create(((SOAPAddress)extension).getLocationURI());
+                }
+                if (extension instanceof SOAP12Address) {
+                    SOAP12Address address = (SOAP12Address)extension;
+                    return URI.create((address.getLocationURI()));
                 }
             }
         }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.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/WSDLDocumentProcessor.java?rev=601507&r1=601506&r2=601507&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLDocumentProcessor.java Wed Dec  5 12:31:58 2007
@@ -50,6 +50,7 @@
 public class WSDLDocumentProcessor implements URLArtifactProcessor<WSDLDefinition> {
 
     public static final QName WSDL11 = new QName("http://schemas.xmlsoap.org/wsdl/", "definitions");
+    public static final QName WSDL11_IMPORT = new QName("http://schemas.xmlsoap.org/wsdl/", "import");
     public static final QName XSD = new QName("http://www.w3.org/2001/XMLSchema", "schema");
 
     private final static XMLInputFactory inputFactory = XMLInputFactory.newInstance();

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=601507&r1=601506&r2=601507&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 Wed Dec  5 12:31:58 2007
@@ -382,7 +382,13 @@
                     xsDefinition.setNamespace(element.getAttribute("targetNamespace"));
                     xsDefinition.setDocument(doc);
                     xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index));
-                    contribution.getModelResolver().resolveModel(XSDefinition.class, xsDefinition);
+                    XSDefinition resolved =
+                        contribution.getModelResolver().resolveModel(XSDefinition.class, xsDefinition);
+                    if (resolved != null && !resolved.isUnresolved()) {
+                        if (!wsdlDefinition.getXmlSchemas().contains(resolved)) {
+                            wsdlDefinition.getXmlSchemas().add(xsDefinition);
+                        }
+                    }
                     index++;
                 }
             }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.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/XSDModelResolver.java?rev=601507&r1=601506&r2=601507&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/XSDModelResolver.java Wed Dec  5 12:31:58 2007
@@ -93,6 +93,12 @@
                 list.get(index).setDocument(definition.getDocument());
             }
         }
+        if (list == null && definition.getDocument() != null) {
+            // Hit for the 1st time
+            list = new ArrayList<XSDefinition>();
+            list.add(definition);
+            map.put(namespace, list);
+        }
         XSDefinition resolved = null;
         try {
             resolved = aggregate(list);
@@ -133,6 +139,7 @@
             XmlSchema schema = schemaCollection.read(definition.getDocument(), uri, null);
             definition.setSchemaCollection(schemaCollection);
             definition.setSchema(schema);
+            definition.setUnresolved(false);
         } else if (definition.getLocation() != null) {
             if (definition.getLocation().getFragment() != null) {
                 // It's an inline schema

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=601507&r1=601506&r2=601507&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 Wed Dec  5 12:31:58 2007
@@ -240,8 +240,8 @@
         XmlSchemaType type = wsdlDefinition.getXmlSchemaType(typeName);
         if (type == null) {
             XSDefinition definition = wsdlFactory.createXSDefinition();
-            definition.setNamespace(typeName.getNamespaceURI());
             definition.setUnresolved(true);
+            definition.setNamespace(typeName.getNamespaceURI());
             definition = resolver.resolveModel(XSDefinition.class, definition);
             if (definition.getSchema() != null) {
                 type = definition.getSchema().getTypeByName(typeName);



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