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 2006/09/09 03:15:00 UTC

svn commit: r441721 - in /incubator/tuscany/java/sca/idl/wsdl/src/main: java/org/apache/tuscany/idl/wsdl/ resources/ resources/META-INF/ resources/META-INF/tuscany/

Author: rfeng
Date: Fri Sep  8 18:14:59 2006
New Revision: 441721

URL: http://svn.apache.org/viewvc?view=rev&rev=441721
Log:
Re-activate interface.wsdl support

Added:
    incubator/tuscany/java/sca/idl/wsdl/src/main/resources/
    incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/
    incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/tuscany/
    incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/tuscany/interface-wsdl.scdl
Modified:
    incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java
    incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLLoader.java

Modified: incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java?view=diff&rev=441721&r1=441720&r2=441721
==============================================================================
--- incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java (original)
+++ incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java Fri Sep  8 18:14:59 2006
@@ -36,6 +36,7 @@
 
 import org.apache.tuscany.spi.idl.InvalidServiceContractException;
 import org.apache.tuscany.spi.model.DataType;
+import org.apache.tuscany.spi.model.InteractionScope;
 
 /**
  * Introspector for creating WSDLServiceContract definitions from WSDL PortTypes.
@@ -103,7 +104,7 @@
                 dataTypes.add(dataType);
             }
         }
-        DataType<List<DataType<QName>>> msgType = new DataType<List<DataType<QName>>>(Object.class, dataTypes);
+        DataType<List<DataType<QName>>> msgType = new DataType<List<DataType<QName>>>("wsdl:parts", Object.class, dataTypes);
         return msgType;
     }
 
@@ -114,7 +115,7 @@
             partTypeName = part.getTypeName();
         }
         // FIXME: What java class is it? Should we try to see if there's a generated one?
-        return new DataType<QName>(Object.class, partTypeName);
+        return new DataType<QName>("org.w3c.dom.Node", Object.class, partTypeName);
     }
 
     /**
@@ -125,6 +126,8 @@
         contract.setPortType(portType);
         contract.setInterfaceName(portType.getQName().getLocalPart());
         contract.setOperations(introspectOperations(portType));
+        // FIXME: set to Non-conversational for now
+        contract.setInteractionScope(InteractionScope.NONCONVERSATIONAL);
         return contract;
     }
 
@@ -133,13 +136,18 @@
      */
     public WSDLServiceContract introspect(PortType portType, PortType callbackPortType)
         throws InvalidServiceContractException {
+        assert portType!=null: "PortType cannot be null";
         WSDLServiceContract contract = new WSDLServiceContract();
+        // FIXME: set to Non-conversational for now
+        contract.setInteractionScope(InteractionScope.NONCONVERSATIONAL);
         contract.setPortType(portType);
         contract.setInterfaceName(portType.getQName().getLocalPart());
         contract.setOperations(introspectOperations(portType));
-        contract.setCallbackPortType(callbackPortType);
-        contract.setCallbackName(callbackPortType.getQName().getLocalPart());
-        contract.setCallbackOperations(introspectOperations(callbackPortType));
+        if (callbackPortType != null) {
+            contract.setCallbackPortType(callbackPortType);
+            contract.setCallbackName(callbackPortType.getQName().getLocalPart());
+            contract.setCallbackOperations(introspectOperations(callbackPortType));
+        }
         return contract;
     }
 

Modified: incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLLoader.java?view=diff&rev=441721&r1=441720&r2=441721
==============================================================================
--- incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLLoader.java (original)
+++ incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLLoader.java Fri Sep  8 18:14:59 2006
@@ -32,10 +32,12 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.LoaderExtension;
+import org.apache.tuscany.spi.idl.InvalidServiceContractException;
 import org.apache.tuscany.spi.loader.InvalidValueException;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.loader.LoaderUtil;
+import org.apache.tuscany.spi.loader.MissingResourceException;
 
 /**
  * Loads a WSDL interface definition from an XML-based assembly file
@@ -48,12 +50,15 @@
     private static final String WSDLI_LOCATION = "wsdlLocation";
 
     private WSDLDefinitionRegistry wsdlRegistry;
+    private InterfaceWSDLIntrospector introspector;
 
-    @Constructor({"registry","wsdlRegistry"})
-    public InterfaceWSDLLoader(@Autowire LoaderRegistry registry,
-                               @Autowire WSDLDefinitionRegistry wsdlRegistry) {
+    @Constructor( { "registry", "wsdlRegistry", "introspector" })
+    public InterfaceWSDLLoader(@Autowire LoaderRegistry registry, 
+                               @Autowire WSDLDefinitionRegistry wsdlRegistry, 
+                               @Autowire InterfaceWSDLIntrospector introspector) {
         super(registry);
         this.wsdlRegistry = wsdlRegistry;
+        this.introspector = introspector;
     }
 
     public QName getXMLType() {
@@ -91,19 +96,29 @@
             }
         }
 
-        WSDLServiceContract serviceContract = new WSDLServiceContract();
-        serviceContract.setPortType(getPortType(interfaceURI));
+        PortType portType = getPortType(interfaceURI);
+        if (portType == null) {
+            throw new MissingResourceException(interfaceURI);
+        }
+        PortType callback = null;
         if (callbackURI != null) {
-            serviceContract.setCallbackPortType(getPortType(callbackURI));
+            callback = getPortType(callbackURI);
+        }
+        try {
+            return introspector.introspect(portType, callback);
+        } catch (InvalidServiceContractException e) {
+            LoaderException le = new LoaderException(e);
+            le.setIdentifier(wsdlLocation);
+            throw le;
         }
-        return serviceContract;
     }
 
     protected PortType getPortType(String uri) {
-        // fixme support WSDL 2.0 XPointer references and possible XML Schema QNames
+        // Syntax: <WSDL-namespace-URI>#wsdl.interface(<portTypeOrInterface-name>)
         int index = uri.indexOf('#');
         String namespace = uri.substring(0, index);
         String name = uri.substring(index + 1);
+        name = name.substring("wsdl.interface(".length(), name.length()-1);
         QName qname = new QName(namespace, name);
         return wsdlRegistry.getPortType(qname);
     }

Added: incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/tuscany/interface-wsdl.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/tuscany/interface-wsdl.scdl?view=auto&rev=441721
==============================================================================
--- incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/tuscany/interface-wsdl.scdl (added)
+++ incubator/tuscany/java/sca/idl/wsdl/src/main/resources/META-INF/tuscany/interface-wsdl.scdl Fri Sep  8 18:14:59 2006
@@ -0,0 +1,40 @@
+<?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.    
+-->
+<!--
+    Default system configuration for the launcher environment.
+    
+    $Rev: 440894 $ $Date: 2006-09-06 15:52:01 -0700 (Wed, 06 Sep 2006) $
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+    name="org.apache.tuscany.idl.WSDL">
+
+    <component name="interface.wsdl.Loader">
+        <system:implementation.system class="org.apache.tuscany.idl.wsdl.InterfaceWSDLLoader" />
+    </component>
+
+    <component name="wsdl.Registry">
+        <system:implementation.system class="org.apache.tuscany.idl.wsdl.WSDLDefinitionRegistryImpl" initLevel="40" />
+    </component>
+
+    <component name="interface.wsdl.Introspector">
+        <system:implementation.system class="org.apache.tuscany.idl.wsdl.InterfaceWSDLIntrospectorImpl" initLevel="40" />
+    </component>
+    
+</composite>
\ No newline at end of file



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