You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2006/10/10 15:12:14 UTC

svn commit: r454730 - in /incubator/cxf/trunk: rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/ rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ tools/common/src/ma...

Author: mmao
Date: Tue Oct 10 06:12:13 2006
New Revision: 454730

URL: http://svn.apache.org/viewvc?view=rev&rev=454730
Log:
Generate SOAP12 Message

* SOAPBindingInfo resolve SoapVersion through namespace (bindingId)
* SOAPBinding create SoapVersion based SoapMessage 
* SoapBindingFactory create SoapVersion based SOAPBinding 
* Added unit test with soap12 SoapBindingFactory
* Fixed SOAP12_HTTP_NAMESPACE 
* Should add more unit tests

Modified:
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
    incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java
    incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java
    incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java?view=diff&rev=454730&r1=454729&r2=454730
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java Tue Oct 10 06:12:13 2006
@@ -51,6 +51,10 @@
         version = v; 
     }
     
+    public void setSoapVersion(SoapVersion v) {
+        this.version = v;
+    }
+    
     public Message createMessage() {
         return createMessage(new MessageImpl());
     }
@@ -62,7 +66,7 @@
         if (mtomEnabled) {
             m.put(Message.MTOM_ENABLED, Boolean.TRUE);
         }
-        return new SoapMessage(m);
+        return soapMessage;
     }
 
     public List<Interceptor> getFaultInterceptors() {

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java?view=diff&rev=454730&r1=454729&r2=454730
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java Tue Oct 10 06:12:13 2006
@@ -116,9 +116,11 @@
         String parameterStyle = SoapConstants.PARAMETER_STYLE_WRAPPED;
         String bindingStyle = SoapConstants.BINDING_STYLE_DOC;
 
-        SoapBinding sb = new SoapBinding();
+        SoapBinding sb = null;
         if (binding instanceof SoapBindingInfo) {
             SoapBindingInfo sbi = (SoapBindingInfo) binding;
+            
+            sb = new SoapBinding(sbi.getSoapVersion());
             // Service wide style
             if (!StringUtils.isEmpty(sbi.getStyle())) {
                 bindingStyle = sbi.getStyle();
@@ -133,6 +135,8 @@
                     parameterStyle = SoapConstants.PARAMETER_STYLE_BARE;
                 }
             }            
+        } else {
+            throw new RuntimeException("Can not initialize SoapBinding, BindingInfo is not SoapBindingInfo");
         }
 
         sb.getInInterceptors().add(new MultipartMessageInterceptor());
@@ -175,7 +179,7 @@
     public BindingInfo createBindingInfo(ServiceInfo service, javax.wsdl.Binding binding) {
         String ns = ((ExtensibilityElement) binding.getExtensibilityElements().get(0)).getElementType()
                         .getNamespaceURI();
-        SoapBindingInfo bi = new SoapBindingInfo(service, ns, Soap11.getInstance());
+        SoapBindingInfo bi = new SoapBindingInfo(service, ns);
 
         // Copy all the extensors
         initializeBindingInfo(service, binding, bi);

Modified: incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java?view=diff&rev=454730&r1=454729&r2=454730
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java Tue Oct 10 06:12:13 2006
@@ -19,18 +19,27 @@
 
 package org.apache.cxf.binding.soap.model;
 
+import org.apache.cxf.binding.soap.Soap11;
+import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.binding.soap.SoapVersion;
 import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 
+import org.apache.cxf.tools.common.WSDLConstants;
+
 public class SoapBindingInfo extends BindingInfo {
     private SoapVersion soapVersion;
 
     private String style;
 
     private String transportURI;
+    
+    public SoapBindingInfo(ServiceInfo serv, String n) {
+        this(serv, n, null);
+        resolveSoapVersion(n);
+    }
 
     public SoapBindingInfo(ServiceInfo serv, String n, SoapVersion soapVersion) {
         super(serv, n);
@@ -38,7 +47,21 @@
         this.soapVersion = soapVersion;
     }
 
+    private void resolveSoapVersion(String n) {
+        if (WSDLConstants.SOAP11_NAMESPACE.equalsIgnoreCase(n)) {
+            this.soapVersion = Soap11.getInstance();
+        } else if (WSDLConstants.SOAP12_NAMESPACE.equalsIgnoreCase(n)) {
+            this.soapVersion = Soap12.getInstance();
+        } else {
+            throw new RuntimeException("Unknow bindingId: " + n + ". Can not resolve the SOAP version");
+        }
+    }
+
+
     public SoapVersion getSoapVersion() {
+        if (soapVersion == null) {
+            resolveSoapVersion(getBindingId());
+        }
         return soapVersion;
     }
 

Modified: incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java?view=diff&rev=454730&r1=454729&r2=454730
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java Tue Oct 10 06:12:13 2006
@@ -31,6 +31,7 @@
 import junit.framework.TestCase;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.BusException;
 import org.apache.cxf.binding.BindingFactoryManager;
 import org.apache.cxf.binding.BindingFactoryManagerImpl;
 import org.apache.cxf.binding.soap.model.SoapBindingInfo;
@@ -41,6 +42,7 @@
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.tools.common.WSDLConstants;
 import org.apache.cxf.transport.DestinationFactoryManager;
 import org.apache.cxf.wsdl11.WSDLServiceBuilder;
 import org.easymock.IMocksControl;
@@ -49,16 +51,29 @@
 import static org.easymock.classextension.EasyMock.createNiceControl;
 
 public class SoapBindingFactoryTest extends TestCase {
+    IMocksControl control;
+    
+    public void setUp() {
+        control = createNiceControl();
+    }
+    
+    private Bus getMockBus() {        
+        return control.createMock(Bus.class);        
+    }
+    
+    private BindingFactoryManager getBindingFactoryManager(String ns) throws BusException {
+        SoapBindingFactory bindingFactory = new SoapBindingFactory();
+        BindingFactoryManager bfm = new BindingFactoryManagerImpl();
+        bfm.registerBindingFactory(ns, bindingFactory);
+        return bfm;
+    }
 
-    public void testFactory() throws Exception {
-        Definition d = createDefinition();
+    public void testFactory() throws Exception {        
+        Definition d = createDefinition("/wsdl/hello_world.wsdl");
 
-        IMocksControl control = createNiceControl();
-        Bus bus = control.createMock(Bus.class);
+        Bus bus = getMockBus();
 
-        SoapBindingFactory bindingFactory = new SoapBindingFactory();
-        BindingFactoryManager bfm = new BindingFactoryManagerImpl();
-        bfm.registerBindingFactory("http://schemas.xmlsoap.org/wsdl/soap/", bindingFactory);
+        BindingFactoryManager bfm = getBindingFactoryManager(WSDLConstants.SOAP11_NAMESPACE);
 
         expect(bus.getExtension(BindingFactoryManager.class)).andReturn(bfm);
         
@@ -77,7 +92,8 @@
 
         SoapBindingInfo sbi = (SoapBindingInfo)bi;
         assertEquals("document", sbi.getStyle());
-        assertEquals("http://schemas.xmlsoap.org/soap/http", sbi.getTransportURI());
+        assertTrue(WSDLConstants.SOAP_HTTP_TRANSPORT.equalsIgnoreCase(sbi.getTransportURI()));
+        assertTrue(sbi.getSoapVersion() instanceof Soap11);
 
         BindingOperationInfo boi = sbi.getOperation(new QName("http://apache.org/hello_world_soap_http",
                                                               "sayHi"));
@@ -94,10 +110,55 @@
         assertNotNull(parts);
         assertEquals(1, parts.size());
     }
+    
+    
+    public void testSoap12Factory() throws Exception {        
+        Definition d = createDefinition("/wsdl/hello_world_soap12.wsdl");
+
+        Bus bus = getMockBus();
+
+        BindingFactoryManager bfm = getBindingFactoryManager(WSDLConstants.SOAP12_NAMESPACE);
+
+        expect(bus.getExtension(BindingFactoryManager.class)).andReturn(bfm);
+        
+        DestinationFactoryManager dfm = control.createMock(DestinationFactoryManager.class);
+        expect(bus.getExtension(DestinationFactoryManager.class)).andStubReturn(dfm);
+        
+        control.replay();
+
+        WSDLServiceBuilder builder = new WSDLServiceBuilder(bus);
+        ServiceInfo serviceInfo = builder
+            .buildService(d, new QName("http://apache.org/hello_world_soap12_http", "SOAPService"));
+
+        BindingInfo bi = serviceInfo.getBindings().iterator().next();
+
+        assertTrue(bi instanceof SoapBindingInfo);
+
+        SoapBindingInfo sbi = (SoapBindingInfo)bi;
+        assertEquals("document", sbi.getStyle());
+        assertTrue(WSDLConstants.SOAP12_HTTP_TRANSPORT.equalsIgnoreCase(sbi.getTransportURI()));
+        assertTrue(sbi.getSoapVersion() instanceof Soap12);
+
+        BindingOperationInfo boi = sbi.getOperation(new QName("http://apache.org/hello_world_soap12_http",
+                                                              "sayHi"));
+        SoapOperationInfo sboi = boi.getExtensor(SoapOperationInfo.class);
+        assertNotNull(sboi);
+        assertEquals("document", sboi.getStyle());
+        assertEquals("", sboi.getAction());
+
+        BindingMessageInfo input = boi.getInput();
+        SoapBodyInfo bodyInfo = input.getExtensor(SoapBodyInfo.class);
+        assertEquals("literal", bodyInfo.getUse());
+
+        List<MessagePartInfo> parts = bodyInfo.getParts();
+        assertNotNull(parts);
+        assertEquals(1, parts.size());
+    }
+    
 
-    public Definition createDefinition() throws Exception {
-        URL resource = getClass().getResource("/wsdl/hello_world.wsdl");
-        return WSDLFactory.newInstance().newWSDLReader().readWSDL("hello_world.wsdl",
+    public Definition createDefinition(String wsdlURL) throws Exception {
+        URL resource = getClass().getResource(wsdlURL);
+        return WSDLFactory.newInstance().newWSDLReader().readWSDL(null,
                                                                   new InputSource(resource.openStream()));
     }
 }

Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java?view=diff&rev=454730&r1=454729&r2=454730
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java Tue Oct 10 06:12:13 2006
@@ -41,7 +41,7 @@
 
     public static final String BINDING = "Binding";
     public static final String SOAP_HTTP_TRANSPORT = "http://schemas.xmlsoap.org/soap/http";
-    public static final String SOAP12_HTTP_TRANSPORT = "http://schemas.xmlsoap.org/soap12/http";
+    public static final String SOAP12_HTTP_TRANSPORT = "http://www.w3.org/2003/05/soap/bindings/http/";
 
     public static final String DOCUMENT = "document";
     public static final String RPC = "rpc";



Re: svn commit: r454730 - in /incubator/cxf/trunk: rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/ rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ tools/common/src/ma...

Posted by Dan Diephouse <da...@envoisolutions.com>.
Hiya,
Well the SoapBindingInfoFactoryBean is really only used when someone is 
doing code first. So I wouldn't worry about that too muc. The Soap 1.2 
fault interceptors still aren't written so that is probably a good thing 
to work on. I'll see if I can get the client side fault handling working 
today/tomorrow and then hopefully we'll have things completely sorted!
Cheers,
- Dan

James Mao wrote:

> There is SoapBindingInfoFactoryBean which still hard code the 
> SOAPVersion with Soap11, i haven't change that, but the basic soap12 
> message should be working now.
> I'll working on Soap12 fault tomorrow.
>
> BTW, Is SOAP11Fault working now? if not, maybe i should get that 
> working first.
>
>
> Cheers,
> James.
>
>> Author: mmao
>> Date: Tue Oct 10 06:12:13 2006
>> New Revision: 454730
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=454730
>> Log:
>> Generate SOAP12 Message
>>
>> * SOAPBindingInfo resolve SoapVersion through namespace (bindingId)
>> * SOAPBinding create SoapVersion based SoapMessage * 
>> SoapBindingFactory create SoapVersion based SOAPBinding * Added unit 
>> test with soap12 SoapBindingFactory
>> * Fixed SOAP12_HTTP_NAMESPACE * Should add more unit tests
>>
>> Modified:
>>     
>> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java 
>>
>>     
>> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java 
>>
>>     
>> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java 
>>
>>     
>> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java 
>>
>>     
>> incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java 
>>
>>
>>   
>
>


-- 
Dan Diephouse
(616) 971-2053
Envoi Solutions LLC
http://netzooid.com


Re: svn commit: r454730 - in /incubator/cxf/trunk: rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/ rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ tools/common/src/ma...

Posted by James Mao <ja...@iona.com>.
There is SoapBindingInfoFactoryBean which still hard code the 
SOAPVersion with Soap11, i haven't change that, but the basic soap12 
message should be working now.
I'll working on Soap12 fault tomorrow.

BTW, Is SOAP11Fault working now? if not, maybe i should get that working 
first.


Cheers,
James.

> Author: mmao
> Date: Tue Oct 10 06:12:13 2006
> New Revision: 454730
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=454730
> Log:
> Generate SOAP12 Message
>
> * SOAPBindingInfo resolve SoapVersion through namespace (bindingId)
> * SOAPBinding create SoapVersion based SoapMessage 
> * SoapBindingFactory create SoapVersion based SOAPBinding 
> * Added unit test with soap12 SoapBindingFactory
> * Fixed SOAP12_HTTP_NAMESPACE 
> * Should add more unit tests
>
> Modified:
>     incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
>     incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
>     incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java
>     incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java
>     incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java
>
>   


Re: svn commit: r454730 - in /incubator/cxf/trunk: rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/ rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ tools/common/src/ma...

Posted by James Mao <ja...@iona.com>.
There is SoapBindingInfoFactoryBean which still hard code the 
SOAPVersion with Soap11, i haven't change that, but the basic soap12 
message should be working now.
I'll working on Soap12 fault tomorrow.

BTW, Is SOAP11Fault working now? if not, maybe i should get that working 
first.


Cheers,
James.

> Author: mmao
> Date: Tue Oct 10 06:12:13 2006
> New Revision: 454730
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=454730
> Log:
> Generate SOAP12 Message
>
> * SOAPBindingInfo resolve SoapVersion through namespace (bindingId)
> * SOAPBinding create SoapVersion based SoapMessage 
> * SoapBindingFactory create SoapVersion based SOAPBinding 
> * Added unit test with soap12 SoapBindingFactory
> * Fixed SOAP12_HTTP_NAMESPACE 
> * Should add more unit tests
>
> Modified:
>     incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
>     incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
>     incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/model/SoapBindingInfo.java
>     incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingFactoryTest.java
>     incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/WSDLConstants.java
>
>