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 2008/01/30 23:48:30 UTC

svn commit: r616935 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/service/model/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/ rt/frontend/jaxws/src/mai...

Author: dkulp
Date: Wed Jan 30 14:48:24 2008
New Revision: 616935

URL: http://svn.apache.org/viewvc?rev=616935&view=rev
Log:
Fix a bunch of issues with handlers and one way operations

Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/LogicalHandlerInterceptorTest.java
    incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/MtoM.java
    incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/CustomerService.java
    incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/GetCustomer.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java Wed Jan 30 14:48:24 2008
@@ -64,6 +64,9 @@
 
     public static BindingOperationInfo getOperation(Exchange exchange, QName opName) {
         Endpoint ep = exchange.get(Endpoint.class);
+        if (ep == null) {
+            return null;
+        }
         BindingInfo service = ep.getEndpointInfo().getBinding();
         return service.getOperation(opName);
     }
@@ -72,6 +75,9 @@
                                                                      boolean output) {
         
         Endpoint ep = exchange.get(Endpoint.class);
+        if (ep == null) {
+            return null;
+        }
         BindingInfo service = ep.getEndpointInfo().getBinding();
         Map<QName, BindingOperationInfo> wrapperMap = 
             CastUtils.cast(service.getProperty("ServiceModel.WRAPPER.MAP"
@@ -92,6 +98,13 @@
                     }
                     if (part != null) {
                         wrapperMap.put(part.getConcreteName(), b);
+                    }
+                } else {
+                    //check for single bare elements
+                    BindingMessageInfo info = output ? b.getOutput() : b.getInput();
+                    if (info != null && info.getMessageParts().size() == 1) {
+                        wrapperMap.put(info.getMessageParts().get(0).getConcreteName(),
+                                       b);
                     }
                 }
             }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java Wed Jan 30 14:48:24 2008
@@ -19,11 +19,15 @@
 
 package org.apache.cxf.jaxws.handler;
 
+import javax.xml.namespace.QName;
 import javax.xml.ws.Binding;
 
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceModelUtil;
 
 public abstract class AbstractJAXWSHandlerInterceptor<T extends Message> extends AbstractPhaseInterceptor<T> {
     private Binding binding;
@@ -104,5 +108,32 @@
         } 
         
         return false;
+    }
+    
+    protected void setupBindingOperationInfo(Exchange exch, Object data) {
+        if (exch.get(BindingOperationInfo.class) == null) {
+            //need to know the operation to determine if oneway
+            QName opName = getOpQName(exch, data);
+            if (opName == null) {
+                return;
+            }
+            BindingOperationInfo bop = ServiceModelUtil
+                .getOperationForWrapperElement(exch, opName, false);
+            if (bop == null) {
+                bop = ServiceModelUtil.getOperation(exch, opName);
+            }
+            if (bop != null) {
+                exch.put(BindingOperationInfo.class, bop);
+                exch.put(OperationInfo.class, bop.getOperationInfo());
+                if (bop.getOutput() == null) {
+                    exch.setOneWay(true);
+                }
+            }
+
+        }
+    }
+    
+    protected QName getOpQName(Exchange ex, Object data) {
+        return null;
     }
 }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java Wed Jan 30 14:48:24 2008
@@ -337,6 +337,8 @@
                     if (responseExpected) {
                         changeMessageDirection(ctx);
                         messageDirectionReversed = true;
+                    } else {
+                        invokeReversedClose();                        
                     }
 
                     break;
@@ -359,11 +361,17 @@
                 } else {
                     invokeReversedClose();
                 }
+                continueProcessing = false;
+                setFault(e);
+                throw e;
+            } else {
+                continueProcessing = false;
+                if (responseExpected || outbound) {
+                    setFault(e);
+                    throw e;
+                } 
+                invokeReversedClose();
             }
-
-            continueProcessing = false;
-            setFault(e);
-            throw e;
         } catch (RuntimeException e) {
             LOG.log(Level.WARNING, "HANDLER_RAISED_RUNTIME_EXCEPTION", e);
 
@@ -376,11 +384,17 @@
             //observer, we have to call close here.
             if (isRequestor()) {
                 invokeReversedClose();
+                continueProcessing = false;
+                setFault(e);
+                throw e;
+            } else if (!responseExpected && !outbound) {
+                invokeReversedClose();
+                continueProcessing = false;
+            } else {
+                continueProcessing = false;
+                setFault(e);
+                throw e;
             }
-
-            continueProcessing = false;
-            setFault(e);
-            throw e;
         }
         return continueProcessing;
     }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java Wed Jan 30 14:48:24 2008
@@ -19,7 +19,10 @@
 
 package org.apache.cxf.jaxws.handler.logical;
 
+import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
 import javax.xml.ws.Binding;
 
 import org.apache.cxf.binding.soap.interceptor.MustUnderstandInterceptor;
@@ -31,6 +34,7 @@
 import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
 import org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor;
 import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
+import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.staxutils.StaxUtils;
@@ -55,6 +59,9 @@
         LogicalMessageContextImpl lctx = new LogicalMessageContextImpl(message);
         invoker.setLogicalMessageContext(lctx);
         boolean requestor = isRequestor(message);
+        if (!requestor) {
+            setupBindingOperationInfo(message.getExchange(), lctx);
+        }
         
         ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), lctx, requestor);
         if (!invoker.invokeLogicalHandlers(requestor, lctx)) {
@@ -99,4 +106,17 @@
     public void handleFault(T message) {
         // TODO
     }
+    
+    protected QName getOpQName(Exchange ex, Object data) {
+        LogicalMessageContextImpl sm = (LogicalMessageContextImpl)data;
+        Source src = sm.getMessage().getPayload();
+        if (src instanceof DOMSource) {
+            DOMSource dsrc = (DOMSource)src;
+            String ln = dsrc.getNode().getLocalName();
+            String ns = dsrc.getNode().getNamespaceURI();
+            return new QName(ns, ln);
+        }
+        return null;
+    }
+
 }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java Wed Jan 30 14:48:24 2008
@@ -118,20 +118,22 @@
                 if (requestor) {
                     // client side - abort
                     message.getInterceptorChain().abort();
-                    Endpoint e = message.getExchange().get(Endpoint.class);
-                    Message responseMsg = e.getBinding().createMessage();            
-
-                    MessageObserver observer = (MessageObserver)message.getExchange()
-                                .get(MessageObserver.class);
-                    if (observer != null) {
-                        //client side outbound, the request message becomes the response message
-                        responseMsg.setContent(XMLStreamReader.class, message
-                            .getContent(XMLStreamReader.class));                        
-                        
-                        message.getExchange().setInMessage(responseMsg);
-                        responseMsg.put(PhaseInterceptorChain.STARTING_AT_INTERCEPTOR_ID,
-                                        LogicalHandlerInInterceptor.class.getName());
-                        observer.onMessage(responseMsg);
+                    if (!message.getExchange().isOneWay()) {
+                        Endpoint e = message.getExchange().get(Endpoint.class);
+                        Message responseMsg = e.getBinding().createMessage();            
+    
+                        MessageObserver observer = (MessageObserver)message.getExchange()
+                                    .get(MessageObserver.class);
+                        if (observer != null) {
+                            //client side outbound, the request message becomes the response message
+                            responseMsg.setContent(XMLStreamReader.class, message
+                                .getContent(XMLStreamReader.class));                        
+                            
+                            message.getExchange().setInMessage(responseMsg);
+                            responseMsg.put(PhaseInterceptorChain.STARTING_AT_INTERCEPTOR_ID,
+                                            LogicalHandlerInInterceptor.class.getName());
+                            observer.onMessage(responseMsg);
+                        }
                     }
                 } else {
                     // server side - abort

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java Wed Jan 30 14:48:24 2008
@@ -21,9 +21,12 @@
 
 import java.net.URI;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Set;
 
 import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.stream.XMLStreamException;
@@ -50,6 +53,7 @@
 import org.apache.cxf.jaxws.handler.AbstractProtocolHandlerInterceptor;
 import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
 import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
+import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.phase.PhaseInterceptorChain;
@@ -122,6 +126,7 @@
     }
 
     private void handleMessageInternal(SoapMessage message) {
+        
         MessageContext context = createProtocolMessageContext(message);
         HandlerChainInvoker invoker = getInvoker(message);
         invoker.setProtocolMessageContext(context);
@@ -144,11 +149,13 @@
             // client side outbound
             if (getInvoker(message).isOutbound()) {
                 message.getInterceptorChain().abort();
-                Endpoint e = message.getExchange().get(Endpoint.class);
-                Message responseMsg = e.getBinding().createMessage();
-
+                
                 MessageObserver observer = (MessageObserver)message.getExchange().get(MessageObserver.class);
-                if (observer != null) {
+                if (!message.getExchange().isOneWay()
+                    && observer != null) {
+                    Endpoint e = message.getExchange().get(Endpoint.class);
+                    Message responseMsg = e.getBinding().createMessage();
+    
                     // the request message becomes the response message
                     message.getExchange().setInMessage(responseMsg);
                     SOAPMessage soapMessage = ((SOAPMessageContext)context).getMessage();
@@ -162,7 +169,6 @@
                                     SOAPHandlerInterceptor.class.getName());
                     observer.onMessage(responseMsg);
                 }
-
                 //We dont call onCompletion here, as onCompletion will be called by inbound
                 //LogicalHandlerInterceptor
             } else {
@@ -206,6 +212,8 @@
         SOAPMessageContextImpl sm = new SOAPMessageContextImpl(message);
         boolean requestor = isRequestor(message);
         ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), sm, requestor);
+        Exchange exch = message.getExchange();
+        setupBindingOperationInfo(exch, sm);
         return sm;
     }
 
@@ -227,4 +235,27 @@
 
     public void handleFault(SoapMessage message) {
     }
+    
+    protected QName getOpQName(Exchange ex, Object data) {
+        SOAPMessageContextImpl sm = (SOAPMessageContextImpl)data;
+        try {
+            SOAPMessage msg = sm.getMessage();
+            if (msg == null) {
+                return null;
+            }
+            SOAPBody body = msg.getSOAPBody();
+            if (body == null) {
+                return null;
+            }
+            Iterator<SOAPElement> it = CastUtils.cast(body.getChildElements());
+            if (it != null && it.hasNext()) {
+                SOAPElement el = it.next();
+                return el.getElementQName();
+            }
+        } catch (SOAPException e) {
+            //ignore, nothing we can do
+        }
+        return null;
+    }
+
 }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java Wed Jan 30 14:48:24 2008
@@ -72,7 +72,7 @@
         //Only happens to non-Dispatch/Provider case.
         if (null == message) {
             Boolean outboundProperty = (Boolean)get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
-            if (!outboundProperty) {
+            if (outboundProperty == null || !outboundProperty) {
                 //No SOAPMessage exists yet, so lets create one
                 SAAJ_IN.handleMessage(getWrappedSoapMessage());
                 message = getWrappedSoapMessage().getContent(SOAPMessage.class);           

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java Wed Jan 30 14:48:24 2008
@@ -520,10 +520,9 @@
         assertTrue(logicalHandlers[1].getInvokeOrderOfHandleMessage()
                    < logicalHandlers[2].getInvokeOrderOfHandleMessage());
         
-        //Close is invoked outside HandlerChainInvoker, eg, in SOAPHandlerInterceptor
-        assertEquals(0, logicalHandlers[0].getCloseCount());
-        assertEquals(0, logicalHandlers[1].getCloseCount());
-        assertEquals(0, logicalHandlers[2].getCloseCount());
+        assertEquals(1, logicalHandlers[0].getCloseCount());
+        assertEquals(1, logicalHandlers[1].getCloseCount());
+        assertEquals(1, logicalHandlers[2].getCloseCount());
         assertEquals(0, logicalHandlers[3].getCloseCount());
 
         assertEquals(0, logicalHandlers[0].getHandleFaultCount());

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/LogicalHandlerInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/LogicalHandlerInterceptorTest.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/LogicalHandlerInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/LogicalHandlerInterceptorTest.java Wed Jan 30 14:48:24 2008
@@ -87,10 +87,11 @@
         });
         expect(invoker.getLogicalHandlers()).andReturn(list);
         expect(message.getExchange()).andReturn(exchange).anyTimes();
+        expect(message.containsKey(Message.REQUESTOR_ROLE)).andReturn(Boolean.TRUE).anyTimes();
         expect(message.keySet()).andReturn(new TreeSet<String>()).anyTimes();
         expect(exchange.get(HandlerChainInvoker.class)).andReturn(invoker);
         expect(exchange.getOutMessage()).andReturn(message);
-        expect(invoker.invokeLogicalHandlers(eq(false), isA(LogicalMessageContext.class)))
+        expect(invoker.invokeLogicalHandlers(eq(true), isA(LogicalMessageContext.class)))
             .andReturn(true);
 
         control.replay();

Modified: incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/MtoM.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/MtoM.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/MtoM.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/MtoM.java Wed Jan 30 14:48:24 2008
@@ -30,6 +30,6 @@
 @WebService(targetNamespace = "uri:org.apache.cxf.javascript.fortest")
 public interface MtoM {
     void receiveNonXmlDH(@WebParam(name = "theArg") MtoMParameterBeanWithDataHandler param);
-    void receiveNonXmlNoDH(@WebParam(name = "theArg") MtoMParameterBeanNoDataHandler param);
+    void receiveNonXmlNoDH(@WebParam(name = "theArgNoDH") MtoMParameterBeanNoDataHandler param);
     MtoMParameterBeanWithDataHandler sendNonXmlDH();
 }

Modified: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/CustomerService.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/CustomerService.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/CustomerService.java (original)
+++ incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/CustomerService.java Wed Jan 30 14:48:24 2008
@@ -72,7 +72,7 @@
     @HttpResource(location = "/customers/{id}")
     @WebMethod
     @WebResult(name = "customer")
-    public Customer getCustomer(@WebParam(name = "GetCustomer") GetCustomer getCustomer) 
+    public Customer getCustomer(@WebParam(name = "getCustomer") GetCustomer getCustomer) 
         throws CustomerNotFoundFault {
         Customer c = customers.get(getCustomer.getId());
         if (c == null) {
@@ -86,7 +86,7 @@
     @Get
     @HttpResource(location = "/customers/details/{id}")
     @WebMethod
-    public String getSomeDetails(@WebParam(name = "GetCustomer") GetCustomer getCustomer) 
+    public String getSomeDetails(@WebParam(name = "getSomeDetails") GetCustomer getCustomer) 
         throws CustomerNotFoundFault {
         return "some details";
     }

Modified: incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/GetCustomer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/GetCustomer.java?rev=616935&r1=616934&r2=616935&view=diff
==============================================================================
--- incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/GetCustomer.java (original)
+++ incubator/cxf/trunk/testutils/src/main/java/org/apache/cxf/customer/bare/GetCustomer.java Wed Jan 30 14:48:24 2008
@@ -19,8 +19,10 @@
 package org.apache.cxf.customer.bare;
 
 import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
 
 @XmlRootElement(name = "GetCustomer")
+@XmlType(name = "GetCustomer")
 public class GetCustomer {
     private long id;