You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2010/07/02 17:12:29 UTC

svn commit: r960020 - in /tuscany/sca-java-2.x/trunk/modules: binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/ binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/ binding-ws-runt...

Author: slaws
Date: Fri Jul  2 15:12:28 2010
New Revision: 960020

URL: http://svn.apache.org/viewvc?rev=960020&view=rev
Log:
More changes to fix binding.s otests. Also change binding.ws model getter/setter to make it more explicit which of the WSDLs it stores are user defined.

Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSServiceBindingProvider.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/resources/binding-wsxml-validation-messages.properties

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java Fri Jul  2 15:12:28 2010
@@ -278,7 +278,7 @@ public class Axis2EngineIntegration {
         }
 
         // Add schema information to the AxisService (needed for "?xsd=" support)
-        addSchemas(wsBinding.getWSDLDefinition(), axisService);
+        addSchemas(wsBinding.getUserSpecifiedWSDLDefinition(), axisService);
 
         // Use the existing WSDL
         Parameter wsdlParam = new Parameter("wsdl4jDefinition", null);

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java Fri Jul  2 15:12:28 2010
@@ -162,7 +162,7 @@ public class Axis2ReferenceBindingInvoke
                 }
                 
                 if (wrapperNamespace == null){
-                    wrapperNamespace =  wsBinding.getWSDLDefinition().getNamespace();
+                    wrapperNamespace =  wsBinding.getUserSpecifiedWSDLDefinition().getNamespace();
                 }
                 
                 QName operationQName = new QName(wrapperNamespace,

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java Fri Jul  2 15:12:28 2010
@@ -203,7 +203,7 @@ public class TuscanyServiceProvider {
             }
             
             if (wrapperNamespace == null){
-                wrapperNamespace =  wsBinding.getWSDLDefinition().getNamespace();
+                wrapperNamespace =  wsBinding.getUserSpecifiedWSDLDefinition().getNamespace();
             }
                       
             QName operationResponseQName = new QName(wrapperNamespace,

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSServiceBindingProvider.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSServiceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws-ri/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/ri/JAXWSServiceBindingProvider.java Fri Jul  2 15:12:28 2010
@@ -81,7 +81,7 @@ public class JAXWSServiceBindingProvider
         //           sometimes getService().getQName returns a QName namespace that doesn't match the WSDL
         //           sometimes getNamespace() returns null
         //        So here we delve directly into the WSDL4J model as the Tuscany model isn't up to date
-        String targetNamespace = wsBinding.getWSDLDefinition().getDefinition().getTargetNamespace();
+        String targetNamespace = wsBinding.getUserSpecifiedWSDLDefinition().getDefinition().getTargetNamespace();
        
         //set up WSDL for Provider   
         List<Source> metadata = new ArrayList<Source>();
@@ -94,7 +94,7 @@ public class JAXWSServiceBindingProvider
         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
         try {
             WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
-            writer.writeWSDL(wsBinding.getWSDLDefinition().getDefinition(), outStream);
+            writer.writeWSDL(wsBinding.getUserSpecifiedWSDLDefinition().getDefinition(), outStream);
         } catch (Exception ex){
             ex.printStackTrace();
         }

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java Fri Jul  2 15:12:28 2010
@@ -117,8 +117,8 @@ public class JAXWSBindingInvoker impleme
             wsdlLocation = new URL(wsBinding.getGeneratedWSDLDocument().getDocumentBaseURI());
         } catch (Exception e) {
             try {
-                if (wsBinding.getWSDLDefinition().getLocation() != null) {
-                    wsdlLocation = wsBinding.getWSDLDefinition().getLocation().toURL();
+                if (wsBinding.getUserSpecifiedWSDLDefinition().getLocation() != null) {
+                    wsdlLocation = wsBinding.getUserSpecifiedWSDLDefinition().getLocation().toURL();
                 }
             } catch (MalformedURLException e1) {
                 // TODO Auto-generated catch block

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java Fri Jul  2 15:12:28 2010
@@ -137,7 +137,7 @@ public class WSDLServiceGenerator {
         String contractName = contract.getName();
 
         List<Port> ports = new ArrayList<Port>();
-        WSDLDefinition wsdlDefinition = wsBinding.getWSDLDefinition();
+        WSDLDefinition wsdlDefinition = wsBinding.getUserSpecifiedWSDLDefinition();
         if (wsdlDefinition == null) {
             error(monitor, "NoWsdlInterface", wsBinding, component.getName(), contract.getName());
             return null;

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java Fri Jul  2 15:12:28 2010
@@ -154,18 +154,24 @@ public interface WebServiceBinding exten
     void setBinding(javax.wsdl.Binding binding);
 
     /**
-     * Returns the WSDL definition.
+     * Returns the WSDL definition that was specified by the
+     * user either via and interface.wsdl or via a wsdlElement 
+     * on the binding. This may be empty if no WSDL was specified
+     * explicitly in which case the generated WSDL should contain
+     * a full WSDL description
+     * 
      * @return the WSDL definition
      */
-    WSDLDefinition getWSDLDefinition();
+    WSDLDefinition getUserSpecifiedWSDLDefinition();
 
     /**
      * Sets the WSDL definition if one was specified by the user in the
-     * composite file
+     * composite file either via and interface.wsdl or via a wsdlElement 
+     * on the binding
      * 
      * @param wsdlDefinition the WSDL definition
      */
-    void setDefinition(WSDLDefinition wsdlDefinition);
+    void setUserSpecifiedWSDLDefinition(WSDLDefinition wsdlDefinition);
 
     /**
      * Returns the WSDL namespace.
@@ -215,29 +221,51 @@ public interface WebServiceBinding exten
      */
     void setGeneratedWSDLDocument(Definition definition);
    
+    /**
+     * Returns string from the WSDL that represents the SOAP binding transport
+     */
+    String getBindingTransport();
     
-    /*
+    /**
      * Returns true if the WSDL style is rpc/encoded
      */
     boolean isRpcEncoded();
     
-    /*
+    /**
      * Returns true if the WSDL style is rpc/literal
      */
     boolean isRpcLiteral();
     
-    /* 
+    /**
      * Returns true if the WSDL style is doc/encoded 
      */
     boolean isDocEncoded();
     
-    /*
+    /**
      * Returns true is the WSDL style is doc/literal
      */
     boolean isDocLiteralUnwrapped();
     
-    /*
+    /**
      * Returns true if the WSDL style is doc/literal/wrapped
      */
     boolean isDocLiteralWrapped();
+    
+    /**
+     * Returns true if the WSDL style is doc/literal
+     * and the mapping to the interface is bare
+     */
+    boolean isDocLiteralBare(); 
+    
+    /**
+     * Returns true is the WSBinding is configured, via WSDL,
+     * to use an HTTP transport
+     */
+    boolean isHTTPTransport();
+    
+    /**
+     * Returns true is the WSBinding is configured, via WSDL,
+     * to use a JMS transport
+     */
+    boolean isJMSTransport();
 }  

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java Fri Jul  2 15:12:28 2010
@@ -138,10 +138,9 @@ class WebServiceBindingImpl implements W
 
     public Binding getBinding() {
         if (binding == null) {
-            if (getWSDLDefinition() != null && wsdlDefinition.getBinding() != null) {
+            if (getUserSpecifiedWSDLDefinition() != null && wsdlDefinition.getBinding() != null) {
                 binding = wsdlDefinition.getBinding();
-                setIsDocumentStyle();
-                setIsLiteralEncoding();
+                determineWSDLCharacteristics();
             }
         }
         return binding;
@@ -202,8 +201,7 @@ class WebServiceBindingImpl implements W
 
     public void setBinding(Binding binding) {
         this.binding = binding;
-        setIsDocumentStyle();
-        setIsLiteralEncoding();
+        determineWSDLCharacteristics();
     }
 
     public void setBindingName(QName bindingName) {
@@ -246,7 +244,7 @@ class WebServiceBindingImpl implements W
         this.serviceName = serviceName;
     }
 
-    public WSDLDefinition getWSDLDefinition() {
+    public WSDLDefinition getUserSpecifiedWSDLDefinition() {
         if (wsdlDefinition == null) {
             Interface iface = bindingInterfaceContract.getInterface();
             if (iface instanceof WSDLInterface) {
@@ -256,7 +254,7 @@ class WebServiceBindingImpl implements W
         return wsdlDefinition;
     }
 
-    public void setDefinition(WSDLDefinition wsdlDefinition) {
+    public void setUserSpecifiedWSDLDefinition(WSDLDefinition wsdlDefinition) {
         this.wsdlDefinition = wsdlDefinition;
     }
 
@@ -306,8 +304,7 @@ class WebServiceBindingImpl implements W
 
     public void setGeneratedWSDLDocument(Definition definition) {
         this.generatedWSDLDocument = definition;
-        setIsDocumentStyle();
-        setIsLiteralEncoding();
+        determineWSDLCharacteristics();
     }
 
     public QName getType() {
@@ -335,6 +332,16 @@ class WebServiceBindingImpl implements W
     public void setOperationSelector(OperationSelector operationSelector) {
     }   
     
+    /**
+     * Some items get calculated and cached as they are used are runtime
+     * to decide what message processing is required
+     */
+    protected void determineWSDLCharacteristics() {
+        setIsDocumentStyle();
+        setIsLiteralEncoding();
+        setIsMessageWrapped();
+    }
+    
     protected void setIsDocumentStyle() {
         
         if (binding == null){
@@ -392,7 +399,9 @@ class WebServiceBindingImpl implements W
     }
     
     protected void setIsMessageWrapped() {
-        isMessageWrapped = getBindingInterfaceContract().getInterface().getOperations().get(0).isWrapperStyle();
+        if (getBindingInterfaceContract() != null){
+            isMessageWrapped = getBindingInterfaceContract().getInterface().getOperations().get(0).isWrapperStyle();
+        }
     }
    
     public boolean isRpcEncoded() {
@@ -416,4 +425,30 @@ class WebServiceBindingImpl implements W
         setIsMessageWrapped();
         return (isDocumentStyle) && (isLiteralEncoding) &&(isMessageWrapped);
     }
+    
+    public boolean isDocLiteralBare() {
+        setIsMessageWrapped();
+        return (isDocumentStyle) && (isLiteralEncoding);
+    }   
+    
+    public boolean isHTTPTransport() {
+        return getBindingTransport().equals("http://schemas.xmlsoap.org/soap/http");
+    }
+    
+    public boolean isJMSTransport() {
+        return getBindingTransport().equals("http://schemas.xmlsoap.org/soap/jms");
+    }
+    
+    public String getBindingTransport() {
+        if (binding != null){
+            for (Object ext : binding.getExtensibilityElements()){
+                if (ext instanceof SOAPBinding){
+                    return ((SOAPBinding)ext).getTransportURI();
+                }
+            }
+        }
+        
+        // if no binding is explicitly specified by the user then default to http
+        return "http://schemas.xmlsoap.org/soap/http";
+    }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java Fri Jul  2 15:12:28 2010
@@ -24,6 +24,8 @@ import static javax.xml.stream.XMLStream
 
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 import javax.wsdl.Binding;
@@ -31,6 +33,7 @@ import javax.wsdl.Port;
 import javax.wsdl.PortType;
 import javax.wsdl.Service;
 import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap.SOAPBinding;
 import javax.wsdl.extensions.soap12.SOAP12Address;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
@@ -132,6 +135,10 @@ public class WebServiceBindingProcessor 
         if (name != null) {
             wsBinding.setName(name);
         }
+        
+        // a collection of endpoint specifications so that we can test that 
+        // only one is present
+        List<String> endpointSpecifications = new ArrayList<String>();
 
         // Read URI
         String uri = getURIString(reader, URI);
@@ -149,6 +156,7 @@ public class WebServiceBindingProcessor 
                 } catch (URISyntaxException ex){
                     error(monitor, "InvalidURISyntax", reader, ex.getMessage());
                 }
+                endpointSpecifications.add("uri");
             }
             
             // BWS20020
@@ -182,6 +190,8 @@ public class WebServiceBindingProcessor 
                 // Read a wsdl.service
                 localName = localName.substring("wsdl.service(".length(), localName.length() - 1);
                 wsBinding.setServiceName(new QName(namespace, localName));
+                
+                endpointSpecifications.add("#wsdl.service");
 
             } else if (localName.startsWith("wsdl.port")) {
 
@@ -195,6 +205,8 @@ public class WebServiceBindingProcessor 
                     wsBinding.setServiceName(new QName(namespace, localName.substring(0, s)));
                     wsBinding.setPortName(localName.substring(s + 1));
                 }
+                
+                endpointSpecifications.add("#wsdl.port");
             } else if (localName.startsWith("wsdl.endpoint")) {
 
                 // Read a wsdl.endpoint
@@ -207,6 +219,7 @@ public class WebServiceBindingProcessor 
                     wsBinding.setServiceName(new QName(namespace, localName.substring(0, s)));
                     wsBinding.setEndpointName(localName.substring(s + 1));
                 }
+                
             } else if (localName.startsWith("wsdl.binding")) {
 
                 // Read a wsdl.binding
@@ -237,7 +250,9 @@ public class WebServiceBindingProcessor 
                         	error(monitor, "MustUseWsdlBinding", reader, wsdlElement);
                             throw new ContributionReadException(wsdlElement + " must use wsdl.binding when using wsa:EndpointReference");
                         }
+                        
                         wsBinding.setEndPointReference(EndPointReferenceHelper.readEndPointReference(reader));
+                        endpointSpecifications.add("wsa:EndpointReference");
                     } 
                 }
                     break;
@@ -248,6 +263,11 @@ public class WebServiceBindingProcessor 
                 break;
             }
         }
+        
+        if (endpointSpecifications.size() > 1){
+            error(monitor, "MultipleEndpointsSpecified", reader, endpointSpecifications.toString() );
+        }
+        
         return wsBinding;
     }
 
@@ -344,7 +364,7 @@ public class WebServiceBindingProcessor 
             wsdlDefinition.getImportedDefinitions().addAll(resolved.getImportedDefinitions());
             wsdlDefinition.getXmlSchemas().addAll(resolved.getXmlSchemas());
             wsdlDefinition.setUnresolved(false);
-            model.setDefinition(wsdlDefinition);
+            model.setUserSpecifiedWSDLDefinition(wsdlDefinition);
             if (model.getBindingName() != null) {
                 WSDLObject<Binding> binding = wsdlDefinition.getWSDLObject(Binding.class, model.getBindingName());
                 if (binding != null) {
@@ -396,11 +416,54 @@ public class WebServiceBindingProcessor 
                 interfaceContract.setInterface(wsdlInterface);
                 model.setBindingInterfaceContract(interfaceContract);
             }
+            
+            validateWSDL(context, model);
+        } else {
+            if (model.getBindingName() != null){
+                error(monitor, "WsdlBindingDoesNotMatch", model, model.getBindingName());
+            }
+            
+            if (model.getServiceName() != null){
+                error(monitor, "WsdlServiceDoesNotMatch", model, model.getServiceName());
+            }
         }
         
         policyProcessor.resolvePolicies(model, resolver, context);
     }
 
+    private void validateWSDL(ProcessorContext context, WebServiceBinding model) {
+        WSDLDefinition wsdlDefinition = model.getUserSpecifiedWSDLDefinition();
+        
+        Port port = model.getPort();
+        
+        if (port != null){
+            validateWSDLPort(context, model, port);
+        } 
+        
+        Binding binding = model.getBinding();
+        
+        if (binding != null){
+            validateWSDLBinding(context, model, binding);
+        } 
+    }
+    
+    private void validateWSDLPort(ProcessorContext context, WebServiceBinding model, Port port){
+        
+        validateWSDLBinding(context, model, port.getBinding());
+        
+    }
+    
+    private void validateWSDLBinding(ProcessorContext context, WebServiceBinding model, Binding binding){
+        // BWS20005 & BWS20010 
+        // Check that the WSDL binding is of a supported type
+        if (!model.isHTTPTransport() && !model.isJMSTransport()){
+            error(context.getMonitor(), 
+                  "InvalidWSDLBindingTransport", 
+                  model, 
+                  model.getBindingTransport());
+        }
+    }
+    
     private PortType getPortType(WebServiceBinding model) {
         PortType portType = null;
         if (model.getPort() != null) {

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/resources/binding-wsxml-validation-messages.properties
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/resources/binding-wsxml-validation-messages.properties?rev=960020&r1=960019&r2=960020&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/resources/binding-wsxml-validation-messages.properties (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws/src/main/resources/binding-wsxml-validation-messages.properties Fri Jul  2 15:12:28 2010
@@ -29,6 +29,8 @@ URINotAbsolute = [BWS20001] The URI valu
 InvalidURISyntax =  The URI value {0} found on binding.ws has invalid syntax
 WSDLServiceOnService = [BWS20003] The wsdlElement attribute of a binding.ws on an SCA service must not specify the wsdl.service form of URI. The following URI was found {0}
 URIFoundForServiceCallback = [BWS20020] For the callback element of an SCA service, the binding must not specify an endpoint address URI or a WS-Addressing wsa:EndpointReference
+InvalidWSDLBindingTransport = [BWS20005][BWS20010] The WSDL binding transport {0} is not supported by Tuscany
+MultipleEndpointsSpecified = [BWS20019] with binding.ws you can only specify one of url, wsa:EndpointReference, #wsdl.service or #wsdl.port. The following were found {0}