You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2007/02/23 22:29:16 UTC

svn commit: r511109 - in /incubator/cxf/trunk: ./ api/src/main/java/org/apache/cxf/databinding/ api/src/main/java/org/apache/cxf/service/model/ api/src/main/java/org/apache/cxf/wsdl/ api/src/test/java/org/apache/cxf/service/model/ parent/ rt/bindings/x...

Author: dandiep
Date: Fri Feb 23 13:29:15 2007
New Revision: 511109

URL: http://svn.apache.org/viewvc?view=rev&rev=511109
Log:
o Upgrade to JAXB 2.1
o Make the ClientProxyFactoryBean easier to use. Add some simple username/password,
  and convenience settters for the ClientFactoryBean.
o Change the Databinding interface so it takes a Service, not a ServiceInfo 
  (needed for the Aegis binding from XFire)
o Remove some unneeded methods from EndpointReferenceUtils.
o Fix ReflectionServiceFactory so we don't initialize the Databinding twice.
o Rework the ContextPropertiesMappingTest to not use EasyMock as it was failing.


Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBinding.java
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java
    incubator/cxf/trunk/api/src/test/java/org/apache/cxf/service/model/MessagePartInfoTest.java
    incubator/cxf/trunk/parent/pom.xml
    incubator/cxf/trunk/pom.xml
    incubator/cxf/trunk/rt/bindings/xml/src/test/java/org/apache/cxf/binding/xml/interceptor/TestBase.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/SourceDataBinding.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/AbstractServiceFactoryBean.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/SimpleMethodDispatcher.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBinding.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBinding.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataBinding.java Fri Feb 23 13:29:15 2007
@@ -19,7 +19,7 @@
 
 package org.apache.cxf.databinding;
 
-import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.service.Service;
 
 public interface DataBinding {
     
@@ -36,6 +36,6 @@
      * information from the databinding.
      * @param serviceInfo
      */
-    void initialize(ServiceInfo serviceInfo);
+    void initialize(Service service);
 
 }

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java Fri Feb 23 13:29:15 2007
@@ -38,7 +38,6 @@
     
     Map<QName, OperationInfo> operations = new ConcurrentHashMap<QName, OperationInfo>(4);
     
-    
     public InterfaceInfo(ServiceInfo info, QName q) {
         name = q;
         service = info;

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java Fri Feb 23 13:29:15 2007
@@ -26,7 +26,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.jws.WebService;
 import javax.wsdl.Definition;
 import javax.wsdl.Port;
 import javax.wsdl.Service;
@@ -572,32 +571,6 @@
         EndpointReferenceType reference = new EndpointReferenceType();
         setAddress(reference, ANONYMOUS_ADDRESS);
         return reference;
-    }
-
-
-    /**
-     * Get the WebService for the provided class.  If the class
-     * itself does not have a WebService annotation, this method
-     * is called recursively on the class's interfaces and superclass. 
-     * @param cls - the Class .
-     * @return WebService - the web service
-     */
-    public static WebService getWebServiceAnnotation(Class<?> cls) {
-        if (cls == null) {
-            return null;
-        }
-        WebService ws = cls.getAnnotation(WebService.class); 
-        if (null != ws) {
-            return ws;
-        }
-        for (Class<?> inf : cls.getInterfaces()) {
-            ws = getWebServiceAnnotation(inf);
-            if (null != ws) {
-                return ws;
-            }
-        }
-
-        return getWebServiceAnnotation(cls.getSuperclass());
     }
 
     /**

Modified: incubator/cxf/trunk/api/src/test/java/org/apache/cxf/service/model/MessagePartInfoTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/test/java/org/apache/cxf/service/model/MessagePartInfoTest.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/api/src/test/java/org/apache/cxf/service/model/MessagePartInfoTest.java (original)
+++ incubator/cxf/trunk/api/src/test/java/org/apache/cxf/service/model/MessagePartInfoTest.java Fri Feb 23 13:29:15 2007
@@ -31,8 +31,11 @@
         
     public void setUp() throws Exception {
         
+        MessageInfo msg = new MessageInfo(null, 
+                                          new QName("http://apache.org/hello_world_soap_http/types",
+                                                    "testMessage"));
         messagePartInfo = new MessagePartInfo(new QName(
-            "http://apache.org/hello_world_soap_http", "testMessagePart"), null);
+            "http://apache.org/hello_world_soap_http", "testMessagePart"), msg);
         messagePartInfo.setElement(true);
     }
     

Modified: incubator/cxf/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/parent/pom.xml?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/parent/pom.xml (original)
+++ incubator/cxf/trunk/parent/pom.xml Fri Feb 23 13:29:15 2007
@@ -44,8 +44,8 @@
 
 
         <jsr181.version>1.0-MR1</jsr181.version>
-        <jaxb.version>2.0</jaxb.version>
-        <jaxb.impl.version>2.0.3</jaxb.impl.version>
+        <jaxb.version>2.1</jaxb.version>
+        <jaxb.impl.version>2.1.2</jaxb.impl.version>
         <jaxws.version>2.0</jaxws.version>
         <jetty.version>5.1.11</jetty.version>
         <saaj.version>1.3</saaj.version>
@@ -505,6 +505,10 @@
                     <exclusion>
                         <groupId>javax.xml.bind</groupId>
                         <artifactId>jsr173_api</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>javax.xml.bind</groupId>
+                        <artifactId>jaxb-api</artifactId>
                     </exclusion>
                 </exclusions>
             </dependency>

Modified: incubator/cxf/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/pom.xml?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/pom.xml (original)
+++ incubator/cxf/trunk/pom.xml Fri Feb 23 13:29:15 2007
@@ -45,7 +45,7 @@
         <snapshotRepository>
             <id>apache.snapshots</id>
             <name>Apache SNAPSHOT Repository</name>
-            <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
+            <url>scpexe://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
         </snapshotRepository>
         <repository>
             <id>apache.incubating</id>

Modified: incubator/cxf/trunk/rt/bindings/xml/src/test/java/org/apache/cxf/binding/xml/interceptor/TestBase.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/test/java/org/apache/cxf/binding/xml/interceptor/TestBase.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/bindings/xml/src/test/java/org/apache/cxf/binding/xml/interceptor/TestBase.java (original)
+++ incubator/cxf/trunk/rt/bindings/xml/src/test/java/org/apache/cxf/binding/xml/interceptor/TestBase.java Fri Feb 23 13:29:15 2007
@@ -138,7 +138,7 @@
 
         control.reset();
         JAXBDataBinding db = new JAXBDataBinding();
-        db.initialize(serviceInfo);
+        db.initialize(service);
         db.setContext(JAXBContext.newInstance(jaxbClasses));
         service.setDataBinding(db);
 

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/SourceDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/SourceDataBinding.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/SourceDataBinding.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/databinding/source/SourceDataBinding.java Fri Feb 23 13:29:15 2007
@@ -27,7 +27,7 @@
 import org.apache.cxf.databinding.DataBinding;
 import org.apache.cxf.databinding.DataReader;
 import org.apache.cxf.databinding.DataWriter;
-import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.service.Service;
 
 /**
  * A simple databinding implementation which reads and writes Source objects.
@@ -48,7 +48,7 @@
         this.nodeWriter = new NodeDataWriter();
     }
 
-    public void initialize(ServiceInfo serviceInfo) {
+    public void initialize(Service service) {
         // do nothing
     }
     

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/AbstractServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/AbstractServiceFactoryBean.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/AbstractServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/AbstractServiceFactoryBean.java Fri Feb 23 13:29:15 2007
@@ -41,7 +41,7 @@
     }
     
     protected void initializeDataBindings() {
-        dataBinding.initialize(getService().getServiceInfo());
+        dataBinding.initialize(getService());
         
         service.setDataBinding(dataBinding);
     }

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java Fri Feb 23 13:29:15 2007
@@ -51,6 +51,9 @@
 
 import org.xml.sax.SAXException;
 
+import com.sun.xml.bind.v2.ContextFactory;
+import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
+
 import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.i18n.UncheckedException;
@@ -66,6 +69,7 @@
 import org.apache.cxf.jaxb.io.XMLStreamDataReader;
 import org.apache.cxf.jaxb.io.XMLStreamDataWriter;
 import org.apache.cxf.resource.URIResolver;
+import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.service.model.SchemaInfo;
 import org.apache.cxf.service.model.ServiceInfo;
@@ -208,7 +212,8 @@
         }
     }
 
-    public void initialize(ServiceInfo serviceInfo) {
+    public void initialize(Service service) {
+        ServiceInfo serviceInfo = service.getServiceInfo();
         Set<Class<?>> classes = new HashSet<Class<?>>();
         JAXBContextInitializer initializer = 
             new JAXBContextInitializer(serviceInfo, classes);
@@ -265,7 +270,20 @@
         }
 
         serviceInfo.setProperty(WSDLServiceBuilder.WSDL_SCHEMA_LIST, col);
-        JAXBSchemaInitializer schemaInit = new JAXBSchemaInitializer(serviceInfo, col);
+        JAXBContextImpl riContext;
+        if (context instanceof JAXBContextImpl) {
+            riContext = (JAXBContextImpl) context;
+        } else {
+            // fall back if we're using another jaxb implementation
+            try {
+                riContext = (JAXBContextImpl)
+                    ContextFactory.createContext(classes.toArray(new Class[classes.size()]), null);
+            } catch (JAXBException e) {
+                throw new ServiceConstructionException(e);
+            }
+        }
+        
+        JAXBSchemaInitializer schemaInit = new JAXBSchemaInitializer(serviceInfo, col, riContext);
         schemaInit.walk();
 
     }

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java Fri Feb 23 13:29:15 2007
@@ -19,14 +19,12 @@
 
 package org.apache.cxf.jaxb;
 
-import java.lang.reflect.Type;
+import java.util.Iterator;
 
 import javax.xml.namespace.QName;
 
-import com.sun.xml.bind.v2.model.annotation.RuntimeInlineAnnotationReader;
-import com.sun.xml.bind.v2.model.core.Element;
-import com.sun.xml.bind.v2.model.core.NonElement;
-import com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder;
+import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
+import com.sun.xml.bind.v2.runtime.JaxBeanInfo;
 
 import org.apache.cxf.service.ServiceModelVisitor;
 import org.apache.cxf.service.model.MessagePartInfo;
@@ -39,10 +37,12 @@
 class JAXBSchemaInitializer extends ServiceModelVisitor {
 
     private XmlSchemaCollection schemas;
-
-    public JAXBSchemaInitializer(ServiceInfo serviceInfo, XmlSchemaCollection col) {
+    private JAXBContextImpl context;
+    
+    public JAXBSchemaInitializer(ServiceInfo serviceInfo, XmlSchemaCollection col, JAXBContextImpl context) {
         super(serviceInfo);
         schemas = col;
+        this.context = context;
     }
 
     @Override
@@ -56,27 +56,24 @@
         if (clazz == null) {
             return;
         }
-        
-        RuntimeModelBuilder builder = new RuntimeModelBuilder(new RuntimeInlineAnnotationReader(), null);
-        NonElement<Type, Class> typeInfo = builder.getTypeInfo(clazz, null);
-
-        QName typeName = typeInfo.getTypeName();
-        // TODO: this doesn't seem to work with elements yet
-        if (typeName == null) {
-            return;
-        }
 
-        boolean isElement = typeInfo instanceof Element;
-        if (isElement) {
-            isElement = ((Element) typeInfo).getElementName() != null;
-        }
+        JaxBeanInfo<?> beanInfo = context.getBeanInfo(clazz);
 
+        boolean isElement = beanInfo.isElement();
         part.setElement(isElement);
         if (isElement) {
-            QName name = ((Element) typeInfo).getElementName();
+            QName name = new QName(beanInfo.getElementNamespaceURI(null), 
+                                   beanInfo.getElementLocalName(null));
             part.setElementQName(name);
             part.setXmlSchema(schemas.getElementByQName(name));
         } else {
+            Iterator<QName> itr = beanInfo.getTypeNames().iterator();
+            if (!itr.hasNext()) {
+                return;
+            }
+            
+            QName typeName = itr.next();
+
             part.setTypeQName(typeName);
             part.setXmlSchema(schemas.getTypeByQName(typeName));
         }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java Fri Feb 23 13:29:15 2007
@@ -25,6 +25,7 @@
 
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
+import javax.mail.util.ByteArrayDataSource;
 import javax.xml.ws.BindingProvider;
 import javax.xml.ws.handler.MessageContext;
 
@@ -142,7 +143,8 @@
         
         Collection<Attachment> attachments = new LinkedList<Attachment>();
 
-        DataSource source = EasyMock.createNiceMock(DataSource.class);
+        DataSource source = new ByteArrayDataSource(new byte[0], "text/xml");
+        
         DataHandler handler1 = new DataHandler(source);
         attachments.add(new AttachmentImpl("part1", handler1));
         DataHandler handler2 = new DataHandler(source);

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxyFactoryBean.java Fri Feb 23 13:29:15 2007
@@ -19,18 +19,57 @@
 package org.apache.cxf.frontend;
 
 import java.lang.reflect.Proxy;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
 
+import org.apache.cxf.Bus;
+import org.apache.cxf.configuration.security.AuthorizationPolicy;
 import org.apache.cxf.endpoint.Client;
 
+/**
+ * This class will create a client for you which implements the specified
+ * service class. Example:
+ * <pre>
+ * ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
+ * factory.setServiceClass(YourServiceInterface.class);
+ * YourServiceInterface client = (YourServiceInterface) factory.create();
+ * </pre>
+ * To access the underlying Client object:
+ * <pre>
+ * Client cxfClient = ClientProxy.getClient(client);
+ * </pre>
+ */
 public class ClientProxyFactoryBean {
     private ClientFactoryBean clientFactoryBean;
-
+    private String username;
+    private String password;
+    private Map<String, Object> properties;
+    private Bus bus;
+    
     public ClientProxyFactoryBean() {
         super();
         this.clientFactoryBean = new ClientFactoryBean();
     }
 
     public Object create() {
+        if (properties == null) {
+            properties = new HashMap<String, Object>();
+        }
+        
+        if (username != null) {
+            AuthorizationPolicy authPolicy = new AuthorizationPolicy();
+            authPolicy.setUserName(username);
+            authPolicy.setPassword(password);
+            properties.put(AuthorizationPolicy.class.getName(), authPolicy);
+        }
+        
+        clientFactoryBean.setProperties(properties);
+        
+        if (bus != null) {
+            clientFactoryBean.setBus(bus);
+        }
+
         Client c = clientFactoryBean.create();
 
         ClientProxy handler = new ClientProxy(c);
@@ -48,6 +87,52 @@
     public void setClientFactoryBean(ClientFactoryBean clientFactoryBean) {
         this.clientFactoryBean = clientFactoryBean;
     }
-    
-    
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public Class getServiceClass() {
+        return clientFactoryBean.getServiceClass();
+    }
+
+    public void setServiceClass(Class serviceClass) {
+        clientFactoryBean.setServiceClass(serviceClass);
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public URL getWsdlURL() {
+        return clientFactoryBean.getServiceFactory().getWsdlURL();
+    }
+
+    public void setWsdlURL(URL wsdlURL) {
+        clientFactoryBean.getServiceFactory().setWsdlURL(wsdlURL);
+    }
+
+    public Bus getBus() {
+        return bus;
+    }
+
+    public void setBus(Bus bus) {
+        this.bus = bus;
+    }
+
+    public Map<String, Object> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Map<String, Object> properties) {
+        this.properties = properties;
+    }
 }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/SimpleMethodDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/SimpleMethodDispatcher.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/SimpleMethodDispatcher.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/SimpleMethodDispatcher.java Fri Feb 23 13:29:15 2007
@@ -91,4 +91,8 @@
     public Method getMethod(BindingOperationInfo op) {
         return opToMethod.get(op.getOperationInfo());
     }
+    
+    public Method getPrimaryMethod(OperationInfo op) {
+        return opToMethod.get(op);
+    }
 }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java Fri Feb 23 13:29:15 2007
@@ -34,7 +34,23 @@
 
     @Override
     public QName getOperationName(InterfaceInfo service, Method method) {
-        return new QName(service.getName().getNamespaceURI(), method.getName());
+        String ns = service.getName().getNamespaceURI();
+        String local = method.getName();
+
+        QName name = new QName(ns, local);
+        if (service.getOperation(name) == null) {
+            return name;
+        }
+
+        int i = 1;
+        while (true) {
+            name = new QName(ns, local + i);
+            if (service.getOperation(name) == null) {
+                return name;
+            } else {
+                i++;
+            }
+        }
     }
 
     @Override

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Fri Feb 23 13:29:15 2007
@@ -125,8 +125,6 @@
 
         initializeServiceModel();
 
-        initializeDataBindings();
-        
         initializeDefaultInterceptors();
 
         if (invoker != null) {
@@ -140,7 +138,10 @@
         } else {
             getService().setExecutor(SynchronousExecutor.getInstance());
         }
-
+        if (getDataBinding() != null) {
+            getService().setDataBinding(getDataBinding());
+        }   
+        
         getService().put(MethodDispatcher.class.getName(), getMethodDispatcher());
 
         createEndpoints();
@@ -181,7 +182,7 @@
         initializeWSDLOperations();
 
         if (getDataBinding() != null) {
-            getDataBinding().initialize(getService().getServiceInfo());
+            getDataBinding().initialize(getService());
         }        
     }
     
@@ -190,19 +191,19 @@
         ServiceInfo serviceInfo = new ServiceInfo();
         ServiceImpl service = new ServiceImpl(serviceInfo);
         
+        service.put(MethodDispatcher.class.getName(), methodDispatcher);
+        
         serviceInfo.setName(getServiceQName());
         serviceInfo.setTargetNamespace(serviceInfo.getName().getNamespaceURI());
         
         createInterface(serviceInfo);
 
+        getDataBinding().initialize(service);
+        
         if (isWrapped()) {
             initializeWrappedElementNames(serviceInfo);
         }
         
-        if (getDataBinding() != null) {
-            getDataBinding().initialize(serviceInfo);
-        }
-        
         if (isWrapped()) {
             initializeWrappedSchema(serviceInfo);
         }
@@ -399,6 +400,7 @@
             el.setQName(mpi.getName());
             el.setMinOccurs(1);
             el.setMaxOccurs(1);
+            el.setNillable(true);
             
             if (mpi.isElement()) {
                 el.setRefName(mpi.getElementQName());

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java?view=diff&rev=511109&r1=511108&r2=511109
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java Fri Feb 23 13:29:15 2007
@@ -78,6 +78,7 @@
                                                "SoapPort2");
 
     public static Test suite() throws Exception {
+        System.setProperty("streax-xo.output.directory", "target/tmp-jaxb");
         TestSuite suite = new TestSuite(ClientServerTest.class);
         return new ClientServerSetupBase(suite) {
                 public void startServers() throws Exception {