You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/07/16 18:02:41 UTC

svn commit: r794728 - in /cxf/trunk: rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ rt/core/src/main/java/org/apache/cxf/interceptor/ rt/core/src/main/java/org/apache/...

Author: dkulp
Date: Thu Jul 16 16:02:40 2009
New Revision: 794728

URL: http://svn.apache.org/viewvc?rev=794728&view=rev
Log:
[CXF-2336] Fix issues with SOAP 1.1/1.2 mixed cases.
1) Soap 1.2 message sent to Soap 1.1 only endpoint should result in
VersionMismatch
2) Soap 1.1 message sent to Soap 1.2 should process, but return as Soap
1.1

Added:
    cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/BaseGreeterImpl.java
      - copied, changed from r794680, cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
Modified:
    cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
    cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
    cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Messages.properties
    cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
    cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OneWayProcessorInterceptor.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ServiceInvokerInterceptor.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
    cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
    cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/Server.java
    cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java

Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java Thu Jul 16 16:02:40 2009
@@ -57,10 +57,18 @@
 
     public Message createMessage(Message m) {
         SoapMessage soapMessage = new SoapMessage(m);
-        soapMessage.setVersion(version);
+        if (m.getExchange() != null) { 
+            if (m.getExchange().getInMessage() instanceof SoapMessage) {
+                soapMessage.setVersion(((SoapMessage)m.getExchange().getInMessage()).getVersion());
+            } else {
+                soapMessage.setVersion(version);                
+            }
+        } else {
+            soapMessage.setVersion(version);
+        }
 
         if (!soapMessage.containsKey(Message.CONTENT_TYPE)) {
-            soapMessage.put(Message.CONTENT_TYPE, version.getContentType());
+            soapMessage.put(Message.CONTENT_TYPE, soapMessage.getVersion().getContentType());
         }
         
         return soapMessage;

Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java Thu Jul 16 16:02:40 2009
@@ -389,7 +389,7 @@
         }
         sb.getInInterceptors().add(new SoapHeaderInterceptor());
 
-        sb.getInInterceptors().add(new ReadHeadersInterceptor(getBus()));
+        sb.getInInterceptors().add(new ReadHeadersInterceptor(getBus(), version));
         sb.getInInterceptors().add(new StartBodyInterceptor());
         sb.getInInterceptors().add(new CheckFaultInterceptor());
         sb.getInInterceptors().add(new MustUnderstandInterceptor());
@@ -817,7 +817,8 @@
             // This will not work if we one of the endpoints disables message
             // processing. But, if you've disabled message processing, you
             // probably aren't going to use this feature.
-            newMO.getBindingInterceptors().add(new ReadHeadersInterceptor(getBus()));
+            
+            newMO.getBindingInterceptors().add(new ReadHeadersInterceptor(getBus(), (SoapVersion)null));
             newMO.getBindingInterceptors().add(new StartBodyInterceptor());
             newMO.getBindingInterceptors().add(new CheckFaultInterceptor());
 

Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Messages.properties?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Messages.properties (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Messages.properties Thu Jul 16 16:02:40 2009
@@ -26,6 +26,7 @@
 NO_OPERATION=No such operation: {0}
 ATTACHMENT_IO=Attachment IO Exception: {0}
 INVALID_VERSION="{0}", the namespace on the "{1}" element, is not a valid SOAP version.
+INVALID_11_VERSION=A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.
 NO_NAMESPACE=No namespace on "{0}" element.
 BP_2211_RPCLIT_CANNOT_BE_NULL=Cannot write part {0}. RPC/Literal parts cannot be null. (WS-I BP R2211)
 UNKNOWN_RPC_LIT_PART=Found element {0} but could not find matching RPC/Literal part
\ No newline at end of file

Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java Thu Jul 16 16:02:40 2009
@@ -37,6 +37,7 @@
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.binding.soap.Soap11;
+import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.binding.soap.SoapHeader;
 import org.apache.cxf.binding.soap.SoapMessage;
@@ -58,10 +59,16 @@
     private static final Logger LOG = LogUtils.getL7dLogger(ReadHeadersInterceptor.class);
 
     private Bus bus;
+    private SoapVersion version;
     public ReadHeadersInterceptor(Bus b) {
         super(Phase.READ);
         bus = b;
     }
+    public ReadHeadersInterceptor(Bus b, SoapVersion v) {
+        super(Phase.READ);
+        version = v;
+        bus = b;
+    }
     public ReadHeadersInterceptor(Bus b, String phase) {
         super(phase);
         bus = b;
@@ -95,6 +102,11 @@
                     throw new SoapFault(new Message("INVALID_VERSION", LOG, ns, xmlReader.getLocalName()),
                                             Soap11.getInstance().getVersionMismatch());
                 }
+                if (soapVersion == Soap12.getInstance()
+                    && version == Soap11.getInstance()) {
+                    throw new SoapFault(new Message("INVALID_11_VERSION", LOG, ns, xmlReader.getLocalName()),
+                                        Soap11.getInstance().getVersionMismatch());                    
+                }
                 message.setVersion(soapVersion);
 
                 XMLStreamReader filteredReader = new PartialXMLStreamReader(xmlReader, message.getVersion()

Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java Thu Jul 16 16:02:40 2009
@@ -31,6 +31,7 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
+import org.apache.cxf.binding.soap.Soap11;
 import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.binding.soap.SoapMessage;
@@ -50,6 +51,10 @@
     }
 
     public void handleMessage(SoapMessage message) throws Fault {
+        if (message.getVersion() == Soap11.getInstance()) {
+            new Soap11FaultInInterceptor().handleMessage(message);
+            return;
+        }
         XMLStreamReader reader = message.getContent(XMLStreamReader.class);
         message.setContent(Exception.class, unmarshalFault(message, reader));
     }

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OneWayProcessorInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OneWayProcessorInterceptor.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OneWayProcessorInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/OneWayProcessorInterceptor.java Thu Jul 16 16:02:40 2009
@@ -27,6 +27,7 @@
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.transport.Conduit;
@@ -97,7 +98,9 @@
         Endpoint ep = exchange.get(Endpoint.class);
         Message msg = null;
         if (ep != null) {
-            msg = ep.getBinding().createMessage();
+            msg = new MessageImpl();
+            msg.setExchange(exchange);
+            msg = ep.getBinding().createMessage(msg);
         }
         return msg;
     }

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ServiceInvokerInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ServiceInvokerInterceptor.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ServiceInvokerInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ServiceInvokerInterceptor.java Thu Jul 16 16:02:40 2009
@@ -28,6 +28,7 @@
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageContentsList;
+import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.service.Service;
@@ -60,7 +61,9 @@
                     
                     Message outMessage = runableEx.getOutMessage();
                     if (outMessage == null) {
-                        outMessage = ep.getBinding().createMessage();
+                        outMessage = new MessageImpl();
+                        outMessage.setExchange(exchange);
+                        outMessage = ep.getBinding().createMessage(outMessage);
                         exchange.setOutMessage(outMessage);
                     }
                     copyJaxwsProperties(message, outMessage);

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java Thu Jul 16 16:02:40 2009
@@ -70,8 +70,8 @@
             Exchange exchange = message.getExchange();
             if (exchange == null) {
                 exchange = new ExchangeImpl();
-                exchange.setInMessage(message);
             }
+            exchange.setInMessage(message);
             setExchangeProperties(exchange, message);
     
             // setup chain

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Thu Jul 16 16:02:40 2009
@@ -28,7 +28,9 @@
 import java.util.concurrent.Future;
 import java.util.logging.Logger;
 
+import javax.xml.soap.SOAPConstants;
 import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
 import javax.xml.soap.SOAPFault;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.Binding;
@@ -189,6 +191,16 @@
         }
         
         if (ex instanceof SoapFault) {
+            if (!soapFault.getNamespaceURI().equals(((SoapFault)ex).getFaultCode().getNamespaceURI())
+                && SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE
+                    .equals(((SoapFault)ex).getFaultCode().getNamespaceURI())) {
+                //change to 1.1
+                try {
+                    soapFault = SOAPFactory.newInstance().createFault();
+                } catch (Throwable t) {
+                    //ignore
+                }
+            }
             soapFault.setFaultString(((SoapFault)ex).getReason());
             soapFault.setFaultCode(((SoapFault)ex).getFaultCode());
             soapFault.setFaultActor(((SoapFault)ex).getRole());

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java Thu Jul 16 16:02:40 2009
@@ -276,7 +276,9 @@
             }
             if (m == null) {
                 Endpoint ep = exchange.get(Endpoint.class);
-                m = ep.getBinding().createMessage();
+                m = new org.apache.cxf.message.MessageImpl();
+                m.setExchange(exchange);
+                m = ep.getBinding().createMessage(m);
                 exchange.setInMessage(m);
             }
         } else {

Modified: cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java (original)
+++ cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java Thu Jul 16 16:02:40 2009
@@ -45,6 +45,7 @@
 import org.apache.cxf.interceptor.OutgoingChainInterceptor;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.BindingFaultInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.Extensible;
@@ -380,16 +381,17 @@
                                  new PreexistingConduitSelector(backChannel,
                                                                 exchange.get(Endpoint.class)));
 
-                    if (!partialResponse.getInterceptorChain().doIntercept(partialResponse) 
-                            && partialResponse.getContent(Exception.class) != null) {
+                    if (chain != null && !chain.doIntercept(partialResponse) 
+                        && partialResponse.getContent(Exception.class) != null) {
                         if (partialResponse.getContent(Exception.class) instanceof Fault) {
                             throw (Fault)partialResponse.getContent(Exception.class);
                         } else {
                             throw new Fault(partialResponse.getContent(Exception.class));
                         }
                     }
-                    
-                    partialResponse.getInterceptorChain().reset();
+                    if (chain != null) {
+                        chain.reset();                        
+                    }
                     exchange.put(ConduitSelector.class, new NullConduitSelector());
                     if (fullResponse != null) {
                         exchange.setOutMessage(fullResponse);
@@ -825,7 +827,11 @@
         Endpoint ep = exchange.get(Endpoint.class);
         Message msg = null;
         if (ep != null) {
-            msg = ep.getBinding().createMessage();
+            msg = new MessageImpl();
+            msg.setExchange(exchange);
+            if (ep.getBinding() != null) {
+                msg = ep.getBinding().createMessage(msg);
+            }
         }
         return msg;
     }

Modified: cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java (original)
+++ cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/MAPAggregatorTest.java Thu Jul 16 16:02:40 2009
@@ -29,16 +29,21 @@
 import javax.xml.namespace.QName;
 import javax.xml.ws.RequestWrapper;
 import javax.xml.ws.ResponseWrapper;
+
 //import javax.xml.ws.RequestWrapper;
 //import javax.xml.ws.ResponseWrapper;
 
 
+import org.apache.cxf.Bus;
 import org.apache.cxf.binding.Binding;
 import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.phase.PhaseManager;
+import org.apache.cxf.phase.PhaseManagerImpl;
+import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
@@ -425,6 +430,17 @@
                            decoupled,
                            zeroLengthAction,
                            fault);
+            
+            Endpoint endpoint = control.createMock(Endpoint.class);
+            endpoint.getOutInterceptors();
+            EasyMock.expectLastCall().andReturn(new ArrayList()).anyTimes();
+            Service serv = control.createMock(Service.class);
+            endpoint.getService();
+            EasyMock.expectLastCall().andReturn(serv).anyTimes();
+            serv.getOutInterceptors();
+            EasyMock.expectLastCall().andReturn(new ArrayList()).anyTimes();
+            exchange.get(Endpoint.class);
+            EasyMock.expectLastCall().andReturn(endpoint).anyTimes();
         }
         control.replay();
         return message;
@@ -435,6 +451,9 @@
                                       boolean usingAddressing) {
         setUpMessageExchange(message, exchange);
         Endpoint endpoint = control.createMock(Endpoint.class);
+        endpoint.getOutInterceptors();
+        EasyMock.expectLastCall().andReturn(new ArrayList()).anyTimes();
+        
         setUpExchangeGet(exchange, Endpoint.class, endpoint);
         EndpointInfo endpointInfo = control.createMock(EndpointInfo.class);
         endpoint.getEndpointInfo();
@@ -445,7 +464,7 @@
         EasyMock.expectLastCall().andReturn(endpointExts);
         BindingInfo bindingInfo = control.createMock(BindingInfo.class);
         endpointInfo.getBinding();
-        EasyMock.expectLastCall().andReturn(bindingInfo).times(2);
+        EasyMock.expectLastCall().andReturn(bindingInfo).anyTimes();
         bindingInfo.getExtensors(EasyMock.eq(ExtensibilityElement.class));
         EasyMock.expectLastCall().andReturn(Collections.EMPTY_LIST);
         ServiceInfo serviceInfo = control.createMock(ServiceInfo.class);
@@ -592,9 +611,9 @@
         EasyMock.expectLastCall().andReturn(endpoint);
         Binding binding = control.createMock(Binding.class);
         endpoint.getBinding();        
-        EasyMock.expectLastCall().andReturn(binding);
+        EasyMock.expectLastCall().andReturn(binding).anyTimes();
         Message partialResponse = getMessage();
-        binding.createMessage();
+        binding.createMessage(EasyMock.isA(Message.class));
         EasyMock.expectLastCall().andReturn(partialResponse);
 
         Destination target = control.createMock(Destination.class);
@@ -656,7 +675,13 @@
     }
 
     private Exchange getExchange() {
+        Bus bus = control.createMock(Bus.class);
+        bus.getExtension(PhaseManager.class);
+        EasyMock.expectLastCall().andReturn(new PhaseManagerImpl()).anyTimes();
+        
         Exchange exchange = control.createMock(Exchange.class);
+        exchange.get(Bus.class);
+        EasyMock.expectLastCall().andReturn(bus).anyTimes();
         //Exchange exchange = new ExchangeImpl();
         return exchange;
     }

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/Server.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/Server.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/Server.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/Server.java Thu Jul 16 16:02:40 2009
@@ -26,6 +26,7 @@
 
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+import org.apache.hello_world_soap_http.BaseGreeterImpl;
 import org.apache.hello_world_soap_http.DocLitBareGreeterImpl;
 import org.apache.hello_world_soap_http.GreeterImpl;
 
@@ -38,7 +39,6 @@
         }
         Object implementor;
         String address;
-        
         implementor = new GreeterImplMultiPort();
         address = "http://localhost:9020/MultiPort/GreeterPort";
         Endpoint.publish(address, implementor);
@@ -47,15 +47,16 @@
         address = "http://localhost:9021/MultiPort/DocBarePort";
         Endpoint.publish(address, implementor);
         
-        
         implementor = new GreeterImpl();
         address = "http://localhost:9000/SoapContext/SoapPort";
         Endpoint.publish(address, implementor);
         
         //publish port with soap12 binding
         address = "http://localhost:9009/SoapContext/SoapPort";
+
+        
         EndpointImpl e = (EndpointImpl) Endpoint.create(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING, 
-                                                        implementor);
+                                                        new Greeter12Impl());
         e.publish(address);
         
         implementor = new DocLitBareGreeterImpl();
@@ -66,10 +67,13 @@
         implementor = new GreeterImplBogus();
         address = "http://localhost:9015/SoapContext/SoapPort";
         Endpoint.publish(address, implementor);
-        
-
     }
-
+    @WebService(endpointInterface = "org.apache.hello_world_soap_http.Greeter",
+                targetNamespace = "http://apache.org/hello_world_soap_http")
+    public class Greeter12Impl extends BaseGreeterImpl {
+    }
+    
+    
     public static void main(String[] args) {
         try {
             Server s = new Server();

Copied: cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/BaseGreeterImpl.java (from r794680, cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/BaseGreeterImpl.java?p2=cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/BaseGreeterImpl.java&p1=cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java&r1=794680&r2=794728&rev=794728&view=diff
==============================================================================
--- cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java (original)
+++ cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/BaseGreeterImpl.java Thu Jul 16 16:02:40 2009
@@ -27,7 +27,6 @@
 import javax.annotation.Resource;
 
 import javax.jws.WebMethod;
-import javax.jws.WebService;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.BindingProvider;
 import javax.xml.ws.Response;
@@ -44,12 +43,7 @@
 import org.apache.hello_world_soap_http.types.TestDocLitFaultResponse;
 import org.apache.hello_world_soap_http.types.TestNillableResponse;
 
-@WebService(serviceName = "SOAPService",
-            portName = "SoapPort",
-            endpointInterface = "org.apache.hello_world_soap_http.Greeter",
-            targetNamespace = "http://apache.org/hello_world_soap_http",
-            wsdlLocation = "testutils/hello_world.wsdl")
-public class GreeterImpl implements Greeter {
+public class BaseGreeterImpl implements Greeter {
 
     private static final Logger LOG = Logger.getLogger(GreeterImpl.class.getName());
 

Modified: cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java?rev=794728&r1=794727&r2=794728&view=diff
==============================================================================
--- cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java (original)
+++ cxf/trunk/testutils/src/main/java/org/apache/hello_world_soap_http/GreeterImpl.java Thu Jul 16 16:02:40 2009
@@ -19,222 +19,14 @@
 
 package org.apache.hello_world_soap_http;
 
-
-import java.io.IOException;
-import java.util.concurrent.Future;
-import java.util.logging.Logger;
-
-import javax.annotation.Resource;
-
-import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.xml.ws.AsyncHandler;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Response;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
-
-import org.apache.hello_world_soap_http.types.BareDocumentResponse;
-import org.apache.hello_world_soap_http.types.ErrorCode;
-import org.apache.hello_world_soap_http.types.GreetMeLaterResponse;
-import org.apache.hello_world_soap_http.types.GreetMeResponse;
-import org.apache.hello_world_soap_http.types.GreetMeSometimeResponse;
-import org.apache.hello_world_soap_http.types.NoSuchCodeLit;
-import org.apache.hello_world_soap_http.types.SayHiResponse;
-import org.apache.hello_world_soap_http.types.TestDocLitFaultResponse;
-import org.apache.hello_world_soap_http.types.TestNillableResponse;
 
 @WebService(serviceName = "SOAPService",
             portName = "SoapPort",
             endpointInterface = "org.apache.hello_world_soap_http.Greeter",
             targetNamespace = "http://apache.org/hello_world_soap_http",
             wsdlLocation = "testutils/hello_world.wsdl")
-public class GreeterImpl implements Greeter {
-
-    private static final Logger LOG = Logger.getLogger(GreeterImpl.class.getName());
-
-    @Resource
-    private WebServiceContext context;
-    
-    private String prefix = "";
-
-    private int invocationCount;
-
-    public WebServiceContext getContext() {
-        return context;
-    }
-    
-    public void setPrefix(String p) {
-        prefix = p;
-    }    
-    
-    public String getPrefix() {
-        return prefix;
-    }
-    public String greetMe(String me) {
-        if ("secure".equals(me)) {
-            MessageContext ctx = getContext().getMessageContext();
-            return "Hello " + ctx.get(BindingProvider.USERNAME_PROPERTY);
-        }
-        if ("principal".equals(me)) {
-            return "Hello " + getContext().getUserPrincipal().getName();
-        }
-        
-        
-        LOG.info("Invoking greetMe " + prefix + me);
-        invocationCount++;
-        return "Hello " + me;
-    }
-
-    public String greetMeLater(long delay) {
-        LOG.info("Invoking greetMeLater " + delay);
-        if (delay > 0) {
-            try {
-                Thread.sleep(delay);
-            } catch (InterruptedException ex) {
-                /// ignore
-            }
-        }
-        return "Hello, finally!";
-    }
-
-    public String sayHi() {
-        LOG.info("Invoking sayHi");
-        invocationCount++;
-        return "Bonjour";
-    }
-
-    public void testDocLitFault(String faultType) throws BadRecordLitFault, NoSuchCodeLitFault {
-        LOG.info("Invoking testDocLitFault");
-        invocationCount++;
-        if (faultType.equals(BadRecordLitFault.class.getSimpleName())) {
-            throw new BadRecordLitFault("TestBadRecordLit", "BadRecordLitFault");
-        }
-        if (faultType.equals(NoSuchCodeLitFault.class.getSimpleName())) {
-            ErrorCode ec = new ErrorCode();
-            ec.setMajor((short)1);
-            ec.setMinor((short)1);
-            NoSuchCodeLit nscl = new NoSuchCodeLit();
-            nscl.setCode(ec);
-            throw new NoSuchCodeLitFault("TestNoSuchCodeLit", nscl);
-        }
-        throw new RuntimeException("Unknown source", new IOException("dummy io exception"));
-    }
-
-    public void greetMeOneWay(String requestType) {
-        invocationCount++;
-        //System.out.println("*********  greetMeOneWay: " + requestType);
-    }
-
-    public String greetMeSometime(String me) {
-        invocationCount++;
-        //System.err.println("In greetMeSometime: " + me);
-        return "How are you " + me;
-    }
-
-    @WebMethod
-    public BareDocumentResponse testDocLitBare(String in) {
-        invocationCount++;
-        BareDocumentResponse res = new BareDocumentResponse();
-        res.setCompany("CXF");
-        res.setId(1);
-        return res;
-    }
-
-    public Future<?>  greetMeSometimeAsync(String requestType,
-                                           AsyncHandler<GreetMeSometimeResponse> asyncHandler) {
-        invocationCount++;
-        System.err.println("In greetMeSometimeAsync 1");
-        return null;
-        /*not called */
-    }
-
-    public Response<GreetMeSometimeResponse> greetMeSometimeAsync(String requestType) {
-        invocationCount++;
-        System.err.println("In greetMeSometimeAsync 2");
-        return null;
-        /*not called */
-    }
-
-    public Response<TestDocLitFaultResponse> testDocLitFaultAsync(String faultType) {
-        invocationCount++;
-        System.err.println("In testDocLitFaultAsync 1");
-        return null;
-        /*not called */
-    }
-
-    public Future<?> testDocLitFaultAsync(String faultType, AsyncHandler ah) {
-        invocationCount++;
-        System.err.println("In testDocLitFaultAsync 2");
-        return null;
-        /*not called */
-    }
-
-    public Future<?> testDocLitBareAsync(String bare, AsyncHandler ah) {
-        invocationCount++;
-        return null;
-        /* not called */
-    }
-
-    public Response<BareDocumentResponse> testDocLitBareAsync(String bare) {
-        invocationCount++;
-        return null;
-        /* not called */
-    }
-
-    public Future<?> greetMeAsync(String requestType, AsyncHandler<GreetMeResponse> asyncHandler) {
-        invocationCount++;
-        return null;
-        /*not called */
-    }
-
-    public Response<GreetMeResponse> greetMeAsync(String requestType) {
-        invocationCount++;
-        return null;
-        /*not called */
-    }
-
-    public Future<?> greetMeLaterAsync(long requestType, AsyncHandler<GreetMeLaterResponse> asyncHandler) {
-        return null;
-        /*not called */
-    }
-
-    public Response<GreetMeLaterResponse> greetMeLaterAsync(long requestType) {
-        return null;
-        /*not called */
-    }
-
-    public Future<?> sayHiAsync(AsyncHandler<SayHiResponse> asyncHandler) {
-        invocationCount++;
-        return null;
-        /*not called */
-    }
-
-    public Response<SayHiResponse> sayHiAsync() {
-        invocationCount++;
-        return null;
-        /*not called */
-    }
-
-    public int getInvocationCount() {
-        return invocationCount;
-    }
-
-    public String testNillable(String nillElem, int intElem) {
-        System.out.println("the testNillable is invoked");
-        return nillElem;
-    }
+public class GreeterImpl extends BaseGreeterImpl {
 
-    public Response<TestNillableResponse> testNillableAsync(String nillElem,
-                                                            int intElem) {
-        return null;
-    }
-    
-    public Future<?> testNillableAsync(String nillElem, 
-                                       int intElem,
-                                       AsyncHandler<TestNillableResponse> asyncHandler) {
-        return null;
-    }
-    
 
 }