You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2008/06/10 00:41:28 UTC

svn commit: r665926 - /incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java

Author: lresende
Date: Mon Jun  9 15:41:27 2008
New Revision: 665926

URL: http://svn.apache.org/viewvc?rev=665926&view=rev
Log:
Set wsdl interface conversational attribute based on policy extensions to wsdl

Modified:
    incubator/tuscany/java/sca/modules/interface-wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/impl/WSDLInterfaceIntrospectorImpl.java

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=665926&r1=665925&r2=665926&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 Mon Jun  9 15:41:27 2008
@@ -21,8 +21,10 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Vector;
 
 import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.interfacedef.Operation;
@@ -36,6 +38,8 @@
  * @version $Rev$ $Date$
  */
 public class WSDLInterfaceIntrospectorImpl {
+    private static final QName POLICY_REQUIRES = new QName("http://www.osoa.org/xmlns/sca/1.0", "requires");
+    private static final QName POLICY_CONVERSATIONAL = new QName("http://www.osoa.org/xmlns/sca/1.0", "conversational");
     
     private XSDFactory xsdFactory;
     
@@ -56,8 +60,7 @@
     public void introspectPortType(WSDLInterface wsdlInterface, PortType portType, WSDLDefinition wsdlDefinition, ModelResolver resolver) throws InvalidWSDLException {
         wsdlInterface.setPortType(portType);
         wsdlInterface.getOperations().addAll(introspectOperations(portType, wsdlDefinition, resolver));
-        // FIXME: set to Non-conversational for now
-        wsdlInterface.setConversational(false);
+        wsdlInterface.setConversational(isConversational(portType));
     }
 
     public static Operation getOperation(javax.wsdl.Operation wsdlOp,
@@ -68,4 +71,20 @@
         return op.getOperation();
     }
     
+    private boolean isConversational(PortType portType) {
+        boolean conversational = false;
+        
+        Object o =  portType.getExtensionAttribute(POLICY_REQUIRES);
+        if(o != null && o instanceof Vector) {
+            Vector<QName> policyAttributes = (Vector<QName>) o;
+            
+            if(policyAttributes.contains(POLICY_CONVERSATIONAL)) {
+                return true;
+            }
+            
+        }
+
+        return conversational;
+    }
+    
 }