Author: slaws
Date: Thu Mar 25 17:31:00 2010
New Revision: 927517

URL: http://svn.apache.org/viewvc?rev=927517&view=rev
Log:
Support bindings that specify WSDL or specify uris and expect WSDL to be 
generated. This is still based on default JAXWS impl

Modified:
    
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-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSServiceBindingProvider.java

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=927517&r1=927516&r2=927517&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
 Thu Mar 25 17:31:00 2010
@@ -39,6 +39,7 @@ import javax.xml.ws.Dispatch;
 import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.soap.SOAPBinding;
 import javax.xml.ws.soap.SOAPFaultException;
 
 import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
@@ -78,20 +79,36 @@ public class JAXWSBindingInvoker impleme
     }
 
     private Dispatch<SOAPMessage> createDispatch(WebServiceBinding wsBinding) {
-        // FIXME: What should we do if the WSDL is generated in memory?
         URL wsdlLocation = null;
         try {
             wsdlLocation = new 
URL(wsBinding.getWSDLDocument().getDocumentBaseURI());
         } catch (MalformedURLException e) {
             try {
-                wsdlLocation = 
wsBinding.getWSDLDefinition().getLocation().toURL();
+                if (wsBinding.getWSDLDefinition().getLocation() != null){
+                    wsdlLocation = 
wsBinding.getWSDLDefinition().getLocation().toURL();
+                }
             } catch (MalformedURLException e1) {
                 // TODO Auto-generated catch block
                 e1.printStackTrace();
             }
         }
-        Service service = Service.create(wsdlLocation, 
wsBinding.getServiceName());
-        return service.createDispatch(new 
QName(wsBinding.getServiceName().getNamespaceURI(), wsBinding.getPortName()),
+
+        QName serviceName = null;
+        QName portName = null;
+        Service service = null;
+        
+        if (wsdlLocation != null){
+            serviceName = wsBinding.getServiceName();
+            portName = new QName(serviceName.getNamespaceURI(), 
wsBinding.getPortName());
+            service = Service.create(wsdlLocation, serviceName);
+        } else {
+            serviceName = wsBinding.getService().getQName();
+            portName = new QName(serviceName.getNamespaceURI(), 
wsBinding.getPort().getName());
+            service = Service.create(serviceName);
+            service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, 
wsBinding.getURI());
+        }
+        
+        return service.createDispatch(portName,
                                       SOAPMessage.class,
                                       Service.Mode.MESSAGE);
     }

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSServiceBindingProvider.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/JAXWSServiceBindingProvider.java?rev=927517&r1=927516&r2=927517&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSServiceBindingProvider.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSServiceBindingProvider.java
 Thu Mar 25 17:31:00 2010
@@ -80,12 +80,32 @@ public class JAXWSServiceBindingProvider
         // Set to use the DOM data binding
         InterfaceContract contract = wsBinding.getBindingInterfaceContract();
         contract.getInterface().resetDataBinding(Node.class.getName());
-
+        
+        // Can we safely assume there is only one port because you configure
+        // a binding in the following ways: 
+        // 1/ default             - one port generated = host domain : host 
port / structural path 
+        // 2/ uri="absolute addr" - one port generated = host domain : uri 
port  / uri path
+        // 3/ uri="relative addr" - one port generated = host domain : host 
port / structural path / relative path
+        // 4/ wsdl.binding        - one port generated = host domain : host 
port / structural path 
+        // 5/ wsdl.port           - one port generated = host domain : port 
port / port path
+        // 6/ wsa:Address         - one port generated = host domain : address 
port / address path
+        // 7/ 4 + 6               - as 6
+
+        // TODO the binding URI will currently have been calculated during 
build
+        // however we don't give the provider a chance to get in and effect the
+        // calculation (see above comment). For now just fake the addition of 
binding 
+        // specific processing by adding a root if it's not already present
+        if (!wsBinding.getURI().startsWith("http://";)) {
+            wsBinding.setURI("http://localhost:8085"; + wsBinding.getURI());
+        }
     }
 
     public void start() {
+        // TODO - turn on Axis2 JAXWS support
+        
+        
         wsEndpoint = Endpoint.create(this);
-        wsEndpoint.publish("http://localhost:8085"; + wsBinding.getURI());
+        wsEndpoint.publish(wsBinding.getURI());
     }
 
     public void stop() {


Reply via email to