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 2007/04/13 00:22:55 UTC

svn commit: r528260 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/service/ api/src/main/java/org/apache/cxf/service/model/ rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/ rt/bindings/http/src/main/java/org/apache/cxf/b...

Author: dkulp
Date: Thu Apr 12 15:22:52 2007
New Revision: 528260

URL: http://svn.apache.org/viewvc?view=rev&rev=528260
Log:
CXF-403 Runtime support for WSDL's where ports in the same service have different portTypes


Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/Service.java
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java
    incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/WebFaultInInterceptor.java
    incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java
    incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectDispatchInInterceptor.java
    incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/LocalServerRegistrationTest.java
    incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/ObjectBindingTest.java
    incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCInInterceptorTest.java
    incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCOutInterceptorTest.java
    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/binding/AbstractBindingFactory.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedInInterceptor.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/ServiceImpl.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/ServiceWSDLBuilder.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/interceptor/ServiceInvokerInterceptorTest.java
    incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
    incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/BareInInterceptorTest.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/DocLiteralInInterceptorTest.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/TestBase.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HeaderTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ServiceModelUtilsTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorDocLitTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorRPCTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java
    incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBeanTest.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
    incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ClientFactoryBeanTest.java
    incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java
    incubator/cxf/trunk/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/AbstractJMSTester.java
    incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java
    incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/WrappedService.java
    incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java
    incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/Server.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/Server.java
    incubator/cxf/trunk/testutils/src/main/resources/wsdl/hello_world.wsdl
    incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/ServiceBuilder.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/Service.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/Service.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/Service.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/Service.java Thu Apr 12 15:22:52 2007
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.service;
 
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Executor;
 
@@ -28,14 +29,17 @@
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.interceptor.InterceptorProvider;
 import org.apache.cxf.service.invoker.Invoker;
+import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 
 public interface Service extends Map<String, Object>, InterceptorProvider {
     
     QName getName();
     
-    ServiceInfo getServiceInfo();
+    List<ServiceInfo> getServiceInfos();
 
+    EndpointInfo getEndpointInfo(QName endpoint);
+    
     DataBinding getDataBinding();
 
     void setDataBinding(DataBinding dataBinding);

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?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- 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 Thu Apr 12 15:22:52 2007
@@ -42,7 +42,8 @@
     }
     
     public static String getTargetNamespace(Exchange exchange) {
-        return getService(exchange).getServiceInfo().getTargetNamespace();
+        //all ServiceInfo's will have the same target namespace
+        return getService(exchange).getServiceInfos().get(0).getTargetNamespace();
     }
     
     public static BindingOperationInfo getOperation(Exchange exchange, String opName) {

Modified: incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/WebFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/WebFaultInInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/WebFaultInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/bindings/coloc/src/main/java/org/apache/cxf/binding/coloc/WebFaultInInterceptor.java Thu Apr 12 15:22:52 2007
@@ -41,7 +41,7 @@
     public void handleMessage(Message message) throws Fault {
         Exception ex = message.getContent(Exception.class);
         if (ex != null) {
-            message.put(Message.RESPONSE_CODE, new Integer(500));
+            message.put(Message.RESPONSE_CODE, Integer.valueOf(500));
         }
         
         if (ex instanceof Fault) {

Modified: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java (original)
+++ incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java Thu Apr 12 15:22:52 2007
@@ -90,7 +90,7 @@
     public BindingInfo createBindingInfo(Service service, String namespace, Object obj) {
         URIMapper mapper = new URIMapper();
         
-        ServiceInfo si = service.getServiceInfo();
+        ServiceInfo si = service.getServiceInfos().get(0);
         BindingInfo info = new BindingInfo(si, 
                                            HttpBindingFactory.HTTP_BINDING_ID);
         info.setName(new QName(si.getName().getNamespaceURI(), 

Modified: incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectDispatchInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectDispatchInInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectDispatchInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectDispatchInInterceptor.java Thu Apr 12 15:22:52 2007
@@ -58,7 +58,7 @@
         if (bindingName == null) {
             binding = ep.getEndpointInfo().getBinding(); 
         } else {
-            binding = ep.getService().getServiceInfo().getBinding(bindingName);
+            binding = ep.getEndpointInfo().getService().getBinding(bindingName);
         }
         
         BindingOperationInfo bop = binding.getOperation(opName);

Modified: incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/LocalServerRegistrationTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/LocalServerRegistrationTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/LocalServerRegistrationTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/LocalServerRegistrationTest.java Thu Apr 12 15:22:52 2007
@@ -63,7 +63,7 @@
         List<Object> content = new ArrayList<Object>();
         content.add("Hello");
 
-        ServiceInfo serviceInfo = server.getEndpoint().getService().getServiceInfo();
+        ServiceInfo serviceInfo = server.getEndpoint().getEndpointInfo().getService();
         BindingInfo bi = serviceInfo.getBindings().iterator().next();
         BindingOperationInfo bop = bi.getOperations().iterator().next();
 

Modified: incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/ObjectBindingTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/ObjectBindingTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/ObjectBindingTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/object/src/test/java/org/apache/cxf/binding/object/ObjectBindingTest.java Thu Apr 12 15:22:52 2007
@@ -61,7 +61,7 @@
         List<Object> content = new ArrayList<Object>();
         content.add("Hello");
 
-        ServiceInfo serviceInfo = server.getEndpoint().getService().getServiceInfo();
+        ServiceInfo serviceInfo = server.getEndpoint().getEndpointInfo().getService();
         BindingInfo bi = serviceInfo.getBindings().iterator().next();
         BindingOperationInfo bop = bi.getOperations().iterator().next();
 

Modified: incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCInInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCInInterceptorTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCInInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCInInterceptorTest.java Thu Apr 12 15:22:52 2007
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.binding.soap;
 
+import java.util.Arrays;
 import java.util.List;
 
 import javax.xml.namespace.QName;
@@ -61,8 +62,9 @@
         JAXBDataBinding dataBinding = new JAXBDataBinding(MyComplexStruct.class);
         service.getDataBinding();
         EasyMock.expectLastCall().andReturn(dataBinding).anyTimes();
-        service.getServiceInfo();
-        EasyMock.expectLastCall().andReturn(si).anyTimes();
+        service.getServiceInfos();
+        List<ServiceInfo> list = Arrays.asList(si);
+        EasyMock.expectLastCall().andReturn(list).anyTimes();
         
         soapMessage.getExchange().put(Service.class, service);
         soapMessage.getExchange().put(Message.SCHEMA_VALIDATION_ENABLED, Boolean.FALSE);

Modified: incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCOutInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCOutInterceptorTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCOutInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/RPCOutInterceptorTest.java Thu Apr 12 15:22:52 2007
@@ -22,6 +22,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import javax.xml.namespace.QName;
@@ -66,8 +67,9 @@
         JAXBDataBinding dataBinding = new JAXBDataBinding(MyComplexStruct.class);
         service.getDataBinding();
         EasyMock.expectLastCall().andReturn(dataBinding).anyTimes();
-        service.getServiceInfo();
-        EasyMock.expectLastCall().andReturn(si).anyTimes();
+        service.getServiceInfos();
+        List<ServiceInfo> list = Arrays.asList(si);
+        EasyMock.expectLastCall().andReturn(list).anyTimes();
 
         soapMessage.getExchange().put(Service.class, service);
         soapMessage.getExchange().put(Message.SCHEMA_VALIDATION_ENABLED, Boolean.FALSE);

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=528260&r1=528259&r2=528260
==============================================================================
--- 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 Thu Apr 12 15:22:52 2007
@@ -130,9 +130,8 @@
 
         org.apache.cxf.service.Service service = factory.create();
 
-        serviceInfo = service.getServiceInfo();
-        
-        EndpointInfo epi = service.getServiceInfo().getEndpoint(portName);
+        EndpointInfo epi = service.getEndpointInfo(portName);
+        serviceInfo = epi.getService();
         assertNotNull(epi);
         Binding xmlBinding = new XMLBindingFactory().createBinding(epi.getBinding());
 

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java Thu Apr 12 15:22:52 2007
@@ -60,7 +60,7 @@
     
     /**
      * Creates a "default" BindingInfo object for the service.  Called by 
-     * createBindingInfo(ServiceInfo service, Binding binding) to actually 
+     * createBindingInfo(Service service, String binding, Object config) to actually 
      * create the BindingInfo.  Can return a subclass which can then process
      * the extensors within the subclass.
      * @param service
@@ -70,8 +70,13 @@
         return new BindingInfo(service, namespace);
     }
     
+    /**
+     * Creates a "default" BindingInfo object for the service.  Can return a subclass 
+     * which can then process the extensors within the subclass.   By default, just 
+     * creates it for the first ServiceInfo in the service
+     */    
     public BindingInfo createBindingInfo(Service service, String namespace, Object config) {
-        return createBindingInfo(service.getServiceInfo(), namespace, config);
+        return createBindingInfo(service.getServiceInfos().get(0), namespace, config);
     }
     
     

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Thu Apr 12 15:22:52 2007
@@ -103,7 +103,7 @@
             ? (new WSDLServiceFactory(bus, wsdlUrl)) : (new WSDLServiceFactory(bus, wsdlUrl, service));
         Service svc = sf.create();
     
-        EndpointInfo epfo = findEndpoint(svc.getServiceInfo(), port);
+        EndpointInfo epfo = findEndpoint(svc, port);
 
         try {
             endpoint = new EndpointImpl(bus, svc, epfo);
@@ -113,30 +113,32 @@
     }
     
 
-    private EndpointInfo findEndpoint(ServiceInfo svcfo, QName port) {
+    private EndpointInfo findEndpoint(Service svc, QName port) {
         EndpointInfo epfo;
         if (port != null) {
-            epfo = svcfo.getEndpoint(port);
+            epfo = svc.getEndpointInfo(port);
             if (epfo == null) {
-                throw new IllegalArgumentException("The service " + svcfo.getName()
+                throw new IllegalArgumentException("The service " + svc.getName()
                                                    + " does not have an endpoint " + port + ".");
             }
         } else {
             epfo = null;
-            for (EndpointInfo e : svcfo.getEndpoints()) {
-                BindingInfo bfo = e.getBinding();
-
-                if (bfo.getBindingId().equals("http://schemas.xmlsoap.org/wsdl/soap/")) {
-                    for (Object o : bfo.getExtensors().get()) {
-                        if (o instanceof SOAPBindingImpl) {
-                            SOAPBindingImpl soapB = (SOAPBindingImpl)o;
-                            if (soapB.getTransportURI().equals("http://schemas.xmlsoap.org/soap/http")) {
-                                epfo = e;
-                                break;
+            for (ServiceInfo svcfo : svc.getServiceInfos()) {
+                for (EndpointInfo e : svcfo.getEndpoints()) {
+                    BindingInfo bfo = e.getBinding();
+    
+                    if (bfo.getBindingId().equals("http://schemas.xmlsoap.org/wsdl/soap/")) {
+                        for (Object o : bfo.getExtensors().get()) {
+                            if (o instanceof SOAPBindingImpl) {
+                                SOAPBindingImpl soapB = (SOAPBindingImpl)o;
+                                if (soapB.getTransportURI().equals("http://schemas.xmlsoap.org/soap/http")) {
+                                    epfo = e;
+                                    break;
+                                }
                             }
                         }
+    
                     }
-
                 }
             }
             if (epfo == null) {
@@ -399,8 +401,8 @@
        
         exchange.put(Service.class, endpoint.getService());
         exchange.put(Endpoint.class, endpoint);
-        exchange.put(ServiceInfo.class, endpoint.getService().getServiceInfo());
-        exchange.put(InterfaceInfo.class, endpoint.getService().getServiceInfo().getInterface());
+        exchange.put(ServiceInfo.class, endpoint.getEndpointInfo().getService());
+        exchange.put(InterfaceInfo.class, endpoint.getEndpointInfo().getService().getInterface());
         exchange.put(Binding.class, endpoint.getBinding());
         exchange.put(BindingInfo.class, endpoint.getEndpointInfo().getBinding());
         exchange.put(BindingOperationInfo.class, boi);

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java Thu Apr 12 15:22:52 2007
@@ -58,7 +58,7 @@
     private MessageObserver outFaultObserver;
 
     public EndpointImpl(Bus bus, Service s, QName endpointName) throws EndpointException {
-        this(bus, s, s.getServiceInfo().getEndpoint(endpointName));
+        this(bus, s, s.getEndpointInfo(endpointName));
     }
     
     public EndpointImpl(Bus bus, Service s, EndpointInfo ei) throws EndpointException {

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java Thu Apr 12 15:22:52 2007
@@ -80,7 +80,8 @@
     private void setSchemaInMessage(Service service, Message message, DataReader<?> reader) {
         Object en = message.getContextualProperty(Message.SCHEMA_VALIDATION_ENABLED);
         if (Boolean.TRUE.equals(en) || "true".equals(en)) {
-            Schema schema = EndpointReferenceUtils.getSchema(service.getServiceInfo());
+            //all serviceInfos have the same schemas
+            Schema schema = EndpointReferenceUtils.getSchema(service.getServiceInfos().get(0));
             reader.setSchema(schema);
         }
     }

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java Thu Apr 12 15:22:52 2007
@@ -59,7 +59,7 @@
     private void setSchemaOutMessage(Service service, Message message, DataWriter<?> writer) {
         Object en = message.getContextualProperty(Message.SCHEMA_VALIDATION_ENABLED);
         if (Boolean.TRUE.equals(en) || "true".equals(en)) {
-            Schema schema = EndpointReferenceUtils.getSchema(service.getServiceInfo());
+            Schema schema = EndpointReferenceUtils.getSchema(service.getServiceInfos().get(0));
             writer.setSchema(schema);
         }
     }

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/BareInInterceptor.java Thu Apr 12 15:22:52 2007
@@ -36,12 +36,12 @@
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
-import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.MessageInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.staxutils.DepthXMLStreamReader;
 import org.apache.cxf.staxutils.StaxUtils;
 
@@ -75,8 +75,8 @@
         List<Object> parameters = new ArrayList<Object>();
 
         Endpoint ep = exchange.get(Endpoint.class);
-        Service service = ep.getService();
         BindingOperationInfo bop = exchange.get(BindingOperationInfo.class);
+        ServiceInfo si = ep.getEndpointInfo().getService();
         // XXX - Should the BindingMessageInfo.class be put on
         // the message?
         //MessageInfo msgInfo = message.get(MessageInfo.class);
@@ -87,7 +87,7 @@
         Collection<OperationInfo> ops = null;
         if (bop == null) {
             ops = new ArrayList<OperationInfo>();
-            ops.addAll(service.getServiceInfo().getInterface().getOperations());
+            ops.addAll(si.getInterface().getOperations());
             if (xmlReader.getEventType() == XMLStreamReader.END_ELEMENT && !client) {
                 //empty input
                 //TO DO : check duplicate operation with no input

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java Thu Apr 12 15:22:52 2007
@@ -38,13 +38,13 @@
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
-import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.MessageInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.staxutils.DepthXMLStreamReader;
 import org.apache.cxf.staxutils.StaxUtils;
 
@@ -91,8 +91,9 @@
         }
 
         if (bop != null && bop.isUnwrappedCapable()) {
+            ServiceInfo si = bop.getBinding().getService();
             // Wrapped case
-            MessageInfo msgInfo = setMessage(message, bop, client);
+            MessageInfo msgInfo = setMessage(message, bop, client, si);
 
             // Determine if there is a wrapper class
             if (msgInfo.getMessageParts().get(0).getTypeClass() != null) {
@@ -104,7 +105,7 @@
 
                 bop = bop.getUnwrappedOperation();
 
-                msgInfo = setMessage(message, bop, client);
+                msgInfo = setMessage(message, bop, client, si);
                 List<MessagePartInfo> messageParts = msgInfo.getMessageParts();
                 Iterator<MessagePartInfo> itr = messageParts.iterator();
 
@@ -137,8 +138,8 @@
             Collection<OperationInfo> operations = null;
             operations = new ArrayList<OperationInfo>();
             Endpoint ep = exchange.get(Endpoint.class);
-            Service service = ep.getService();
-            operations.addAll(service.getServiceInfo().getInterface().getOperations());
+            ServiceInfo si = ep.getEndpointInfo().getService();
+            operations.addAll(si.getInterface().getOperations());
 
             if (!StaxUtils.toNextElement(xmlReader)) {
                 // empty input
@@ -194,7 +195,8 @@
         }
     }
 
-    private MessageInfo setMessage(Message message, BindingOperationInfo operation, boolean requestor) {
+    private MessageInfo setMessage(Message message, BindingOperationInfo operation,
+                                   boolean requestor, ServiceInfo si) {
         MessageInfo msgInfo = getMessageInfo(message, operation, requestor);
         message.put(MessageInfo.class, msgInfo);
 
@@ -205,11 +207,10 @@
         //Set standard MessageContext properties required by JAX_WS, but not specific to JAX_WS.
         message.put(Message.WSDL_OPERATION, operation.getName());
 
-        Service service = message.getExchange().get(Service.class);
-        QName serviceQName = service.getServiceInfo().getName();
+        QName serviceQName = si.getName();
         message.put(Message.WSDL_SERVICE, serviceQName);
 
-        QName interfaceQName = service.getServiceInfo().getInterface().getName();
+        QName interfaceQName = si.getInterface().getName();
         message.put(Message.WSDL_INTERFACE, interfaceQName);
 
         EndpointInfo endpointInfo = message.getExchange().get(Endpoint.class).getEndpointInfo();

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedInInterceptor.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedInInterceptor.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedInInterceptor.java Thu Apr 12 15:22:52 2007
@@ -36,12 +36,12 @@
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.Phase;
-import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.MessageInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.service.model.ServiceModelUtil;
 import org.apache.cxf.staxutils.DepthXMLStreamReader;
 import org.apache.cxf.staxutils.StaxUtils;
@@ -87,10 +87,12 @@
 
         }
 
+        ServiceInfo si = operation.getBinding().getService();
+
         DataReader<XMLStreamReader> dr = getDataReader(message);
         List<Object> objects;
 
-        MessageInfo msgInfo = setMessage(message, operation, requestor);
+        MessageInfo msgInfo = setMessage(message, operation, requestor, si);
         
         // Determine if there is a wrapper class
         if (operation.isUnwrappedCapable()
@@ -107,7 +109,7 @@
                 operation = operation.getUnwrappedOperation();
             }
 
-            msgInfo = setMessage(message, operation, requestor);
+            msgInfo = setMessage(message, operation, requestor, si);
             List<MessagePartInfo> messageParts = msgInfo.getMessageParts();
             Iterator<MessagePartInfo> itr = messageParts.iterator();
 
@@ -126,7 +128,8 @@
         message.setContent(List.class, objects);
     }
 
-    private MessageInfo setMessage(Message message, BindingOperationInfo operation, boolean requestor) {
+    private MessageInfo setMessage(Message message, BindingOperationInfo operation,
+                                   boolean requestor, ServiceInfo si) {
         MessageInfo msgInfo = getMessageInfo(message, operation, requestor);
         message.put(MessageInfo.class, msgInfo);
 
@@ -137,11 +140,10 @@
         //Set standard MessageContext properties required by JAX_WS, but not specific to JAX_WS.
         message.put(Message.WSDL_OPERATION, operation.getName());
         
-        Service service = message.getExchange().get(Service.class);
-        QName serviceQName = service.getServiceInfo().getName();
+        QName serviceQName = si.getName();
         message.put(Message.WSDL_SERVICE, serviceQName);
 
-        QName interfaceQName = service.getServiceInfo().getInterface().getName();
+        QName interfaceQName = si.getInterface().getName();
         message.put(Message.WSDL_INTERFACE, interfaceQName);
 
         EndpointInfo endpointInfo = message.getExchange().get(Endpoint.class).getEndpointInfo();

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/ServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/ServiceImpl.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/ServiceImpl.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/ServiceImpl.java Thu Apr 12 15:22:52 2007
@@ -19,7 +19,9 @@
 
 package org.apache.cxf.service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Executor;
 
@@ -30,22 +32,30 @@
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.interceptor.AbstractAttributedInterceptorProvider;
 import org.apache.cxf.service.invoker.Invoker;
+import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.workqueue.SynchronousExecutor;
 
 public class ServiceImpl extends AbstractAttributedInterceptorProvider implements Service, Configurable {
-    private ServiceInfo serviceInfo;
+    private List<ServiceInfo> serviceInfos;
     private DataBinding dataBinding;
     private Executor executor;
     private Invoker invoker;
     private Map<QName, Endpoint> endpoints = new HashMap<QName, Endpoint>();
     
     public ServiceImpl() {
-        this(null);
+        this((ServiceInfo)null);
     }
     
     public ServiceImpl(ServiceInfo si) {
-        serviceInfo = si;
+        serviceInfos = new ArrayList<ServiceInfo>();
+        if (si != null) {
+            serviceInfos.add(si);
+        }
+        executor = SynchronousExecutor.getInstance();    
+    }
+    public ServiceImpl(List<ServiceInfo> si) {
+        serviceInfos = si;
         executor = SynchronousExecutor.getInstance();    
     }
     
@@ -54,12 +64,23 @@
     }
 
     public QName getName() {
-        return serviceInfo.getName();
+        return serviceInfos.get(0).getName();
     }
 
-    public ServiceInfo getServiceInfo() {
-        return serviceInfo;
+    public List<ServiceInfo> getServiceInfos() {
+        return serviceInfos;
     }
+    
+    public EndpointInfo getEndpointInfo(QName endpoint) {
+        for (ServiceInfo inf : serviceInfos) {
+            EndpointInfo ef = inf.getEndpoint(endpoint);
+            if (ef != null) {
+                return ef;
+            }
+        }
+        return null;
+    }
+    
 
     public Executor getExecutor() {
         return executor;

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/ServiceWSDLBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/ServiceWSDLBuilder.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/ServiceWSDLBuilder.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/ServiceWSDLBuilder.java Thu Apr 12 15:22:52 2007
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.wsdl11;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -71,17 +72,22 @@
     private Map<String, String> prefix2ns;
     private Map<String, String> ns2prefix;
     private Definition definition;
-    private ServiceInfo service;
+    private List<ServiceInfo> services;
     
-    public ServiceWSDLBuilder(ServiceInfo service) {
-        this.service = service;
+    public ServiceWSDLBuilder(List<ServiceInfo> services) {
+        this.services = services;
+        prefix2ns = new HashMap<String, String>();
+        ns2prefix = new HashMap<String, String>();
+    }
+    public ServiceWSDLBuilder(ServiceInfo ... services) {
+        this.services = Arrays.asList(services);
         prefix2ns = new HashMap<String, String>();
         ns2prefix = new HashMap<String, String>();
     }
 
     public Definition build() throws WSDLException {
         try {
-            definition = service.getProperty(WSDLServiceBuilder.WSDL_DEFINITION, Definition.class);
+            definition = services.get(0).getProperty(WSDLServiceBuilder.WSDL_DEFINITION, Definition.class);
         } catch (ClassCastException e) {
             //ignore
         }
@@ -95,15 +101,18 @@
             addNamespace("soap", "http://schemas.xmlsoap.org/soap/");
             addNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
             
-            definition.setQName(service.getName());
-            definition.setTargetNamespace(service.getTargetNamespace());
-            addExtensibiltyElements(definition, getWSDL11Extensors(service));
-            if (service.getSchemas() != null && service.getSchemas().size() > 0) {
-                buildTypes(service.getSchemas());
+            ServiceInfo si = services.get(0);
+            definition.setQName(si.getName());
+            definition.setTargetNamespace(si.getTargetNamespace());
+            addExtensibiltyElements(definition, getWSDL11Extensors(si));
+            if (si.getSchemas() != null && si.getSchemas().size() > 0) {
+                buildTypes(si.getSchemas());
+            }
+            for (ServiceInfo service : services) {
+                buildPortType(service.getInterface());
+                buildBinding(service.getBindings());
+                buildService(service);
             }
-            buildPortType(service.getInterface());
-            buildBinding(service.getBindings());
-            buildService(service);
         }
         return definition;
     }

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java Thu Apr 12 15:22:52 2007
@@ -20,6 +20,7 @@
 package org.apache.cxf.wsdl11;
 
 import java.net.URL;
+import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Logger;
 
@@ -86,9 +87,9 @@
     }
     
     public Service create() {
-        ServiceInfo serviceInfo;
+        
+        List<ServiceInfo> services;
         if (serviceName == null) {
-            List<ServiceInfo> services = null;
             try {
                 services = new WSDLServiceBuilder(getBus()).buildServices(definition);
             } catch (XmlSchemaException ex) {
@@ -98,8 +99,14 @@
                 throw new ServiceConstructionException(new Message("NO_SERVICE_EXC", LOG));
             } else {
                 //@@TODO  - this isn't good, need to return all the services
-                serviceInfo = services.get(0);
-                serviceName = serviceInfo.getName();
+                serviceName = services.get(0).getName();
+                //get all the service info's that match that first one.
+                Iterator<ServiceInfo> it = services.iterator();
+                while (it.hasNext()) {
+                    if (!it.next().getName().equals(serviceName)) {
+                        it.remove();
+                    }
+                }
             }
         } else {
             javax.wsdl.Service wsdlService = definition.getService(serviceName);
@@ -107,12 +114,12 @@
                 throw new ServiceConstructionException(new Message("NO_SUCH_SERVICE_EXC", LOG, serviceName));
             }
             try {
-                serviceInfo = new WSDLServiceBuilder(getBus()).buildServices(definition, wsdlService).get(0);
+                services = new WSDLServiceBuilder(getBus()).buildServices(definition, wsdlService);
             } catch (XmlSchemaException ex) {
                 throw new ServiceConstructionException(new Message("SERVICE_CREATION_MSG", LOG), ex);
             }
         }
-        ServiceImpl service = new ServiceImpl(serviceInfo);
+        ServiceImpl service = new ServiceImpl(services);
         setService(service);
         return service;
     }

Modified: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/interceptor/ServiceInvokerInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/interceptor/ServiceInvokerInterceptorTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/interceptor/ServiceInvokerInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/interceptor/ServiceInvokerInterceptorTest.java Thu Apr 12 15:22:52 2007
@@ -31,6 +31,7 @@
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.ServiceImpl;
 import org.apache.cxf.service.invoker.Invoker;
+import org.apache.cxf.service.model.ServiceInfo;
 import org.easymock.IMocksControl;
 
 import static org.easymock.EasyMock.createNiceControl;
@@ -67,7 +68,7 @@
         IMocksControl control = createNiceControl();
         Endpoint endpoint = control.createMock(Endpoint.class);
 
-        ServiceImpl service = new ServiceImpl(null);
+        ServiceImpl service = new ServiceImpl((ServiceInfo)null);
         service.setInvoker(i);
         service.setExecutor(new SimpleExecutor());
         expect(endpoint.getService()).andReturn(service).anyTimes();

Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java (original)
+++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java Thu Apr 12 15:22:52 2007
@@ -112,19 +112,21 @@
     }
 
     public void initialize(Service service) {
-        ServiceInfo endpoint = service.getServiceInfo();
+        QName serviceName = service.getServiceInfos().get(0).getName();
         TypeMapping serviceTM = typeMappingRegistry.createTypeMapping(XmlConstants.XSD, true);
-        typeMappingRegistry.register(endpoint.getName().getNamespaceURI(), serviceTM);
+        typeMappingRegistry.register(serviceName.getNamespaceURI(), serviceTM);
 
         service.put(TypeMapping.class.getName(), serviceTM);
 
         Set<Type> deps = new HashSet<Type>();
 
-        for (OperationInfo opInfo : endpoint.getInterface().getOperations()) {
-            if (opInfo.isUnwrappedCapable()) {
-                initializeOperation(service, serviceTM, opInfo.getUnwrappedOperation(), deps);
-            } else {
-                initializeOperation(service, serviceTM, opInfo, deps);
+        for (ServiceInfo info : service.getServiceInfos()) {
+            for (OperationInfo opInfo : info.getInterface().getOperations()) {
+                if (opInfo.isUnwrappedCapable()) {
+                    initializeOperation(service, serviceTM, opInfo.getUnwrappedOperation(), deps);
+                } else {
+                    initializeOperation(service, serviceTM, opInfo, deps);
+                }
             }
         }
 
@@ -251,12 +253,14 @@
             try {
                 org.w3c.dom.Document schema = new DOMOutputter().output(new Document(e));
 
-                SchemaInfo info = new SchemaInfo(service.getServiceInfo(), entry.getKey());
+                for (ServiceInfo si : service.getServiceInfos()) {
+                    SchemaInfo info = new SchemaInfo(si, entry.getKey());
 
-                info.setElement(schema.getDocumentElement());
-                info.setSystemId(entry.getKey());
-
-                service.getServiceInfo().addSchema(info);
+                    info.setElement(schema.getDocumentElement());
+                    info.setSystemId(entry.getKey());
+    
+                    si.addSchema(info);
+                }
             } catch (JDOMException e1) {
                 throw new ServiceConstructionException(e1);
             }

Modified: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java (original)
+++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/AbstractAegisTest.java Thu Apr 12 15:22:52 2007
@@ -135,7 +135,7 @@
         for (Server s : svrMan.getServers()) {
             Service svc = s.getEndpoint().getService();
             if (svc.getName().getLocalPart().equals(string)) {
-                ServiceWSDLBuilder builder = new ServiceWSDLBuilder(svc.getServiceInfo());
+                ServiceWSDLBuilder builder = new ServiceWSDLBuilder(svc.getServiceInfos());
                 Definition definition = builder.build();
                 
                 WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java Thu Apr 12 15:22:52 2007
@@ -148,7 +148,8 @@
         ClientImpl client = new ClientImpl(bus, u, service, port);
 
         Service svc = client.getEndpoint().getService();
-        Collection<SchemaInfo> schemas = svc.getServiceInfo().getSchemas();
+        //all SI's should have the same schemas
+        Collection<SchemaInfo> schemas = svc.getServiceInfos().get(0).getSchemas();
 
         SchemaCompiler compiler = XJC.createSchemaCompiler();
         ErrorListener elForRun = new InnerErrorListener(wsdlUrl);
@@ -228,7 +229,7 @@
         databinding.setContext(context);
         svc.setDataBinding(databinding);
 
-        ServiceInfo svcfo = svc.getServiceInfo();
+        ServiceInfo svcfo = client.getEndpoint().getEndpointInfo().getService();
 
         // Setup the new classloader!
         Thread.currentThread().setContextClassLoader(cl);

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=528260&r1=528259&r2=528260
==============================================================================
--- 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 Thu Apr 12 15:22:52 2007
@@ -236,79 +236,81 @@
     }
 
     public void initialize(Service service) {
-        ServiceInfo serviceInfo = service.getServiceInfo();
         Set<Class<?>> classes = new HashSet<Class<?>>();
-        JAXBContextInitializer initializer = 
-            new JAXBContextInitializer(serviceInfo, classes);
-        initializer.walk();
-
+        for (ServiceInfo serviceInfo : service.getServiceInfos()) {
+            JAXBContextInitializer initializer = 
+                new JAXBContextInitializer(serviceInfo, classes);
+            initializer.walk();
+    
+        }
         try {
             setContext(createJAXBContext(classes));
         } catch (JAXBException e1) {
             throw new ServiceConstructionException(e1);
         }
-        
-        XmlSchemaCollection col = (XmlSchemaCollection)serviceInfo
-            .getProperty(WSDLServiceBuilder.WSDL_SCHEMA_LIST);
-
-        if (col != null) {
-            // someone has already filled in the types
-            return;
-        }
-
-        col = new XmlSchemaCollection();
-
-        try {
-            for (DOMResult r : generateJaxbSchemas()) {
-                Document d = (Document)r.getNode();
-                String ns = d.getDocumentElement().getAttribute("targetNamespace");
-                if (ns == null) {
-                    ns = "";
-                }
-
-                NodeList nodes = d.getDocumentElement().getChildNodes();
-                for (int i = 0; i < nodes.getLength(); i++) {
-                    Node n = nodes.item(i);
-                    if (n instanceof Element) {
-                        Element e = (Element) n;
-                        if (e.getLocalName().equals("import")) {
-                            d.getDocumentElement().removeChild(e);
+            
+        for (ServiceInfo serviceInfo : service.getServiceInfos()) {
+            XmlSchemaCollection col = (XmlSchemaCollection)serviceInfo
+                .getProperty(WSDLServiceBuilder.WSDL_SCHEMA_LIST);
+    
+            if (col != null) {
+                // someone has already filled in the types
+                continue;
+            }
+    
+            col = new XmlSchemaCollection();
+    
+            try {
+                for (DOMResult r : generateJaxbSchemas()) {
+                    Document d = (Document)r.getNode();
+                    String ns = d.getDocumentElement().getAttribute("targetNamespace");
+                    if (ns == null) {
+                        ns = "";
+                    }
+    
+                    NodeList nodes = d.getDocumentElement().getChildNodes();
+                    for (int i = 0; i < nodes.getLength(); i++) {
+                        Node n = nodes.item(i);
+                        if (n instanceof Element) {
+                            Element e = (Element) n;
+                            if (e.getLocalName().equals("import")) {
+                                d.getDocumentElement().removeChild(e);
+                            }
                         }
                     }
+                    
+                    // Don't include WS-Addressing bits
+                    if ("http://www.w3.org/2005/08/addressing/wsdl".equals(ns)) {
+                        continue;
+                    }
+    
+                    SchemaInfo schema = new SchemaInfo(serviceInfo, ns);
+                    schema.setElement(d.getDocumentElement());
+                    schema.setSystemId(r.getSystemId());
+                    serviceInfo.addSchema(schema);
+                    col.read(d.getDocumentElement());
                 }
-                
-                // Don't include WS-Addressing bits
-                if ("http://www.w3.org/2005/08/addressing/wsdl".equals(ns)) {
-                    continue;
-                }
-
-                SchemaInfo schema = new SchemaInfo(serviceInfo, ns);
-                schema.setElement(d.getDocumentElement());
-                schema.setSystemId(r.getSystemId());
-                serviceInfo.addSchema(schema);
-                col.read(d.getDocumentElement());
+            } catch (IOException e) {
+                throw new ServiceConstructionException(new Message("SCHEMA_GEN_EXC", BUNDLE), e);
             }
-        } catch (IOException e) {
-            throw new ServiceConstructionException(new Message("SCHEMA_GEN_EXC", BUNDLE), e);
-        }
-
-        serviceInfo.setProperty(WSDLServiceBuilder.WSDL_SCHEMA_LIST, 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);
+    
+            serviceInfo.setProperty(WSDLServiceBuilder.WSDL_SCHEMA_LIST, 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();
         }
-        
-        JAXBSchemaInitializer schemaInit = new JAXBSchemaInitializer(serviceInfo, col, riContext);
-        schemaInit.walk();
-
     }
 
     private List<DOMResult> generateJaxbSchemas() throws IOException {
@@ -352,7 +354,7 @@
             // context?
         }
        
-        return  JAXBContext.newInstance(classes.toArray(new Class[classes.size()]));
+        return JAXBContext.newInstance(classes.toArray(new Class[classes.size()]));
     }
 
 }

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/BareInInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/BareInInterceptorTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/BareInInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/BareInInterceptorTest.java Thu Apr 12 15:22:52 2007
@@ -186,7 +186,7 @@
                                                             new QName(ns, "SOAPService"));
 
         service = factory.create();
-        endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "SoapPort"));
+        endpointInfo = service.getServiceInfos().get(0).getEndpoint(new QName(ns, "SoapPort"));
         endpoint = new EndpointImpl(bus, service, endpointInfo);
         JAXBDataBinding db = new JAXBDataBinding();
         db.setContext(JAXBContext.newInstance(new Class[] {
@@ -216,7 +216,7 @@
                                                             new QName(ns, "SOAPService"));
 
         service = factory.create();
-        endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "SoapPort"));
+        endpointInfo = service.getServiceInfos().get(0).getEndpoint(new QName(ns, "SoapPort"));
         endpoint = new EndpointImpl(bus, service, endpointInfo);
         JAXBDataBinding db = new JAXBDataBinding();
         db.setContext(JAXBContext.newInstance(new Class[] {

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/DocLiteralInInterceptorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/DocLiteralInInterceptorTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/DocLiteralInInterceptorTest.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/DocLiteralInInterceptorTest.java Thu Apr 12 15:22:52 2007
@@ -170,7 +170,7 @@
             .getResource("/wsdl/hello_world.wsdl"), new QName(ns, "SOAPService"));
 
         service = factory.create();
-        endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "SoapPort"));
+        endpointInfo = service.getEndpointInfo(new QName(ns, "SoapPort"));
         endpoint = new EndpointImpl(bus, service, endpointInfo);
         JAXBDataBinding db = new JAXBDataBinding();
         db.setContext(JAXBContext.newInstance(new Class[] {GreetMe.class, GreetMeResponse.class}));
@@ -195,7 +195,7 @@
             .getResource("/wsdl/doc_lit_bare.wsdl"), new QName(ns, "SOAPService"));
 
         service = factory.create();
-        endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "SoapPort"));
+        endpointInfo = service.getEndpointInfo(new QName(ns, "SoapPort"));
         endpoint = new EndpointImpl(bus, service, endpointInfo);
         JAXBDataBinding db = new JAXBDataBinding();
         db.setContext(JAXBContext.newInstance(new Class[] {TradePriceData.class}));

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/TestBase.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/TestBase.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/TestBase.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/TestBase.java Thu Apr 12 15:22:52 2007
@@ -89,7 +89,7 @@
                                                             new QName(ns, "SOAPService"));
 
         service = factory.create();
-        endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "SoapPort"));
+        endpointInfo = service.getEndpointInfo(new QName(ns, "SoapPort"));
         endpoint = new EndpointImpl(bus, service, endpointInfo);
         JAXBDataBinding db = new JAXBDataBinding();
         db.setContext(JAXBContext.newInstance(new Class[] {

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java Thu Apr 12 15:22:52 2007
@@ -103,9 +103,10 @@
     private void initializePorts() {        
         WSDLServiceFactory sf = new WSDLServiceFactory(bus, wsdlURL, serviceName);
         Service service = sf.create();
-        ServiceInfo si = service.getServiceInfo();
-        for (EndpointInfo ei : si.getEndpoints()) {
-            this.ports.add(ei.getName());
+        for (ServiceInfo si : service.getServiceInfos()) { 
+            for (EndpointInfo ei : si.getEndpoints()) {
+                this.ports.add(ei.getName());
+            }
         }
     }
 
@@ -117,10 +118,9 @@
 
     private Endpoint getJaxwsEndpoint(QName portName, AbstractServiceFactoryBean sf) {
         Service service = sf.getService();
-        ServiceInfo si = service.getServiceInfo();
         EndpointInfo ei = null;
         if (portName == null) {
-            ei = si.getEndpoints().iterator().next();
+            ei = service.getServiceInfos().get(0).getEndpoints().iterator().next();
         } else {
             PortInfoImpl portInfo = getPortInfo(portName);
             if (null != portInfo) {
@@ -130,7 +130,7 @@
                     throw new WebServiceException(e);
                 }
             } else {
-                ei = si.getEndpoint(portName);
+                ei = service.getEndpointInfo(portName);
             }
         }
 
@@ -333,15 +333,15 @@
 
 
         Service service = serviceFactory.getService();
-        service.getServiceInfo().addBinding(bindingInfo);
+        service.getServiceInfos().get(0).addBinding(bindingInfo);
 
         // TODO we may need to get the transportURI from Address
-        ei = new EndpointInfo(service.getServiceInfo(), transportId);
+        ei = new EndpointInfo(service.getServiceInfos().get(0), transportId);
         ei.setName(portName);
         ei.setAddress(address);
         ei.setBinding(bindingInfo);
 
-        service.getServiceInfo().addEndpoint(ei);
+        service.getServiceInfos().get(0).addEndpoint(ei);
         return ei;
     }
 

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java Thu Apr 12 15:22:52 2007
@@ -128,10 +128,12 @@
             }
 
             boolean messageMode = implInfo.getServiceMode().equals(javax.xml.ws.Service.Mode.MESSAGE);
-            for (BindingInfo bi : getService().getServiceInfo().getBindings()) {
-                if ((bi instanceof SoapBindingInfo) 
-                    && messageMode && !type.equals(SOAPMessage.class)) {
-                    bi.setProperty(SoapBindingFactory.MESSAGE_PROCESSING_DISABLED, Boolean.TRUE);
+            if (getEndpointInfo() != null) {
+                for (BindingInfo bi : getEndpointInfo().getService().getBindings()) {
+                    if ((bi instanceof SoapBindingInfo) 
+                        && messageMode && !type.equals(SOAPMessage.class)) {
+                        bi.setProperty(SoapBindingFactory.MESSAGE_PROCESSING_DISABLED, Boolean.TRUE);
+                    }
                 }
             }
         }
@@ -197,7 +199,7 @@
             Method invoke = getServiceClass().getMethod("invoke", c);
 
             // Bind each operation to the invoke method.
-            for (OperationInfo o : getService().getServiceInfo().getInterface().getOperations()) {
+            for (OperationInfo o : getEndpointInfo().getService().getInterface().getOperations()) {
                 getMethodDispatcher().bind(o, invoke);
             }
 
@@ -207,7 +209,7 @@
             throw new ServiceConstructionException(e);
         }
 
-        for (BindingInfo bi : getService().getServiceInfo().getBindings()) {
+        for (BindingInfo bi : getEndpointInfo().getService().getBindings()) {
             bi.setProperty(AbstractBindingFactory.DATABINDING_DISABLED, Boolean.TRUE);
         }
     }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstTest.java Thu Apr 12 15:22:52 2007
@@ -91,7 +91,7 @@
         
         Service service = bean.create();
 
-        InterfaceInfo i = service.getServiceInfo().getInterface();
+        InterfaceInfo i = service.getServiceInfos().get(0).getInterface();
         assertEquals(2, i.getOperations().size());
 
         ServerFactoryBean svrFactory = new ServerFactoryBean();
@@ -100,11 +100,11 @@
         svrFactory.setAddress(address);
         svrFactory.create();
         
-        Collection<BindingInfo> bindings = service.getServiceInfo().getBindings();
+        Collection<BindingInfo> bindings = service.getServiceInfos().get(0).getBindings();
         assertEquals(1, bindings.size());
         
         ServiceWSDLBuilder wsdlBuilder = 
-            new ServiceWSDLBuilder(service.getServiceInfo());
+            new ServiceWSDLBuilder(service.getServiceInfos().get(0));
         return wsdlBuilder.build();
     }
 

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java Thu Apr 12 15:22:52 2007
@@ -49,7 +49,7 @@
         
         Service service = bean.create();
 
-        InterfaceInfo i = service.getServiceInfo().getInterface();
+        InterfaceInfo i = service.getServiceInfos().get(0).getInterface();
         assertEquals(2, i.getOperations().size());
 
         ServerFactoryBean svrFactory = new ServerFactoryBean();
@@ -58,11 +58,11 @@
         svrFactory.setAddress(address);
         svrFactory.create();
         
-        Collection<BindingInfo> bindings = service.getServiceInfo().getBindings();
+        Collection<BindingInfo> bindings = service.getServiceInfos().get(0).getBindings();
         assertEquals(1, bindings.size());
         
         ServiceWSDLBuilder wsdlBuilder = 
-            new ServiceWSDLBuilder(service.getServiceInfo());
+            new ServiceWSDLBuilder(service.getServiceInfos().get(0));
         return wsdlBuilder.build();
     }
 

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HeaderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HeaderTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HeaderTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/HeaderTest.java Thu Apr 12 15:22:52 2007
@@ -49,7 +49,7 @@
         
         Service service = bean.create();
         
-        OperationInfo op = service.getServiceInfo().getInterface().getOperation(
+        OperationInfo op = service.getServiceInfos().get(0).getInterface().getOperation(
             new QName(service.getName().getNamespaceURI(), "testHeader5"));
         assertNotNull(op);
         List<MessagePartInfo> parts = op.getInput().getMessageParts();

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/JaxWsClientTest.java Thu Apr 12 15:22:52 2007
@@ -120,7 +120,7 @@
         Service service = bean.create();
 
         String namespace = "http://apache.org/hello_world_soap_http";
-        EndpointInfo ei = service.getServiceInfo().getEndpoint(new QName(namespace, "SoapPort"));
+        EndpointInfo ei = service.getServiceInfos().get(0).getEndpoint(new QName(namespace, "SoapPort"));
         JaxWsEndpointImpl endpoint = new JaxWsEndpointImpl(getBus(), service, ei);
 
         ClientImpl client = new ClientImpl(getBus(), endpoint);

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ServiceModelUtilsTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ServiceModelUtilsTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ServiceModelUtilsTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ServiceModelUtilsTest.java Thu Apr 12 15:22:52 2007
@@ -66,7 +66,7 @@
         bean.setWsdlURL(wsdl.toString());
         bean.setServiceClass(implClz);
         Service service = bean.create();
-        EndpointInfo endpointInfo = service.getServiceInfo().getEndpoint(port);
+        EndpointInfo endpointInfo = service.getServiceInfos().get(0).getEndpoint(port);
         Endpoint endpoint = new EndpointImpl(getBus(), service, endpointInfo);
         exchange.put(Service.class, service);
         exchange.put(Endpoint.class, endpoint);

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorDocLitTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorDocLitTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorDocLitTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorDocLitTest.java Thu Apr 12 15:22:52 2007
@@ -77,7 +77,7 @@
 
         Service service = bean.create();
         
-        EndpointInfo endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "CalculatorPort"));
+        EndpointInfo endpointInfo = service.getEndpointInfo(new QName(ns, "CalculatorPort"));
         Endpoint endpoint = new EndpointImpl(getBus(), service, endpointInfo);
         exchange.put(Service.class, service);
         exchange.put(Endpoint.class, endpoint);        

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorRPCTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorRPCTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorRPCTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/URIMappingInterceptorRPCTest.java Thu Apr 12 15:22:52 2007
@@ -76,7 +76,7 @@
 
         Service service = bean.create();
         
-        EndpointInfo endpointInfo = service.getServiceInfo().getEndpoint(new QName(ns, "SoapPortRPCLit"));
+        EndpointInfo endpointInfo = service.getEndpointInfo(new QName(ns, "SoapPortRPCLit"));
         Endpoint endpoint = new EndpointImpl(getBus(), service, endpointInfo);
         exchange.put(Service.class, service);
         exchange.put(Endpoint.class, endpoint);

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java Thu Apr 12 15:22:52 2007
@@ -60,7 +60,7 @@
         assertEquals("SOAPService", service.getName().getLocalPart());
         assertEquals("http://apache.org/hello_world_soap_http", service.getName().getNamespaceURI());
 
-        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
         assertNotNull(intf);
 
         JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
@@ -88,7 +88,7 @@
 
         assertEquals("DOMSourcePayloadProviderService", service.getName().getLocalPart());
 
-        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
         assertNotNull(intf);
 
         JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
@@ -99,7 +99,7 @@
 
         ServerImpl server = (ServerImpl)svrFactory.create();
 
-        assertEquals(1, service.getServiceInfo().getEndpoints().size());
+        assertEquals(1, service.getServiceInfos().get(0).getEndpoints().size());
 
         Endpoint endpoint = server.getEndpoint();
         Binding binding = endpoint.getBinding();
@@ -123,7 +123,7 @@
 
         assertEquals("SOAPSourcePayloadProviderService", service.getName().getLocalPart());
 
-        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
         assertNotNull(intf);
         assertEquals(1, intf.getOperations().size());
 
@@ -136,7 +136,7 @@
         ServerImpl server = (ServerImpl)svrFactory.create();
 
         // See if our endpoint was created correctly
-        assertEquals(1, service.getServiceInfo().getEndpoints().size());
+        assertEquals(1, service.getServiceInfos().get(0).getEndpoints().size());
 
         Endpoint endpoint = server.getEndpoint();
         Binding binding = endpoint.getBinding();
@@ -165,7 +165,7 @@
 
         assertEquals("SAAJProviderService", service.getName().getLocalPart());
 
-        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
         assertNotNull(intf);
         assertEquals(1, intf.getOperations().size());
 

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBeanTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBeanTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBeanTest.java Thu Apr 12 15:22:52 2007
@@ -60,7 +60,7 @@
         assertEquals("SOAPService", service.getName().getLocalPart());
         assertEquals(ns, service.getName().getNamespaceURI());
         
-        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
         
         OperationInfo op = intf.getOperation(new QName(ns, "sayHi"));
         
@@ -95,7 +95,7 @@
         bean.setServiceClass(TestMtomImpl.class);
 
         Service service = bean.create();
-        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        InterfaceInfo intf = service.getServiceInfos().get(0).getInterface();
         
         OperationInfo op = intf.getOperation(
             new QName("http://cxf.apache.org/mime", "testXop"));

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java Thu Apr 12 15:22:52 2007
@@ -77,17 +77,16 @@
             endpointName = serviceFactory.getEndpointName();
         }
         
-        EndpointInfo ei = service.getServiceInfo().getEndpoint(endpointName);
+        EndpointInfo ei = service.getEndpointInfo(endpointName);
         if (ei != null
             && transportId != null
             && !ei.getTransportId().equals(transportId)) {
             ei = null;
         }
         
-        Endpoint ep = null;
         if (ei == null) {
             if (getAddress() == null) {
-                ei = findBestEndpointInfo(service.getServiceInfo());
+                ei = findBestEndpointInfo(service.getServiceInfos());
             }
             if (ei == null) {
                 ei = createEndpointInfo();
@@ -96,7 +95,7 @@
             ei.setAddress(getAddress()); 
         }                        
 
-        ep = service.getEndpoints().get(ei.getName());
+        Endpoint ep = service.getEndpoints().get(ei.getName());
         
         if (ep == null) {
             ep = serviceFactory.createEndpoint(ei);
@@ -123,23 +122,21 @@
         return ep;
     }
 
-    protected EndpointInfo findBestEndpointInfo(ServiceInfo serviceInfo) {
-        Collection<EndpointInfo> eps = serviceInfo.getEndpoints();
-        if (eps.size() == 1) {
-            return eps.iterator().next();
-        } else {
+    protected EndpointInfo findBestEndpointInfo(List<ServiceInfo> serviceInfos) {
+        EndpointInfo best = null;
+        for (ServiceInfo serviceInfo : serviceInfos) {
+            Collection<EndpointInfo> eps = serviceInfo.getEndpoints();
             for (EndpointInfo ep : eps) {
+                if (best == null) {
+                    best = ep;
+                }
                 if (ep.getTransportId().equals("http://schemas.xmlsoap.org/wsdl/soap/")) {
                     return ep;
                 }
             }
-        } 
-        
-        if (eps.size() > 0) {
-            return eps.iterator().next();
         }
         
-        return null;
+        return best;
     }
 
     protected EndpointInfo createEndpointInfo() throws BusException {
@@ -175,7 +172,7 @@
             transportId = "http://schemas.xmlsoap.org/wsdl/soap/";
         }
         
-        service.getServiceInfo().addBinding(bindingInfo);
+        service.getServiceInfos().get(0).addBinding(bindingInfo);
 
         setTransportId(transportId);
         
@@ -184,9 +181,9 @@
             destinationFactory = dfm.getDestinationFactory(transportId);
         }
         
-        EndpointInfo ei = new EndpointInfo(service.getServiceInfo(), transportId);
+        EndpointInfo ei = new EndpointInfo(service.getServiceInfos().get(0), transportId);
         int count = 1;
-        while (service.getServiceInfo().getEndpoint(endpointName) != null) {
+        while (service.getEndpointInfo(endpointName) != null) {
             endpointName = new QName(endpointName.getNamespaceURI(), 
                                      endpointName.getLocalPart() + count);
             count++;
@@ -202,7 +199,7 @@
         } else {
             // ?
         }
-        service.getServiceInfo().addEndpoint(ei);
+        service.getServiceInfos().get(0).addEndpoint(ei);
         return ei;
     }
 

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=528260&r1=528259&r2=528260
==============================================================================
--- 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 Thu Apr 12 15:22:52 2007
@@ -27,6 +27,7 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -152,13 +153,15 @@
     protected void createEndpoints() {
         Service service = getService();
 
-        for (EndpointInfo ei : service.getServiceInfo().getEndpoints()) {
-            try {
-                Endpoint ep = createEndpoint(ei);
-
-                service.getEndpoints().put(ei.getName(), ep);
-            } catch (EndpointException e) {
-                throw new ServiceConstructionException(e);
+        for (ServiceInfo inf : service.getServiceInfos()) {
+            for (EndpointInfo ei : inf.getEndpoints()) {
+                try {
+                    Endpoint ep = createEndpoint(ei);
+    
+                    service.getEndpoints().put(ei.getName(), ep);
+                } catch (EndpointException e) {
+                    throw new ServiceConstructionException(e);
+                }
             }
         }
     }
@@ -241,20 +244,31 @@
         Method[] methods = serviceClass.getMethods();
         Arrays.sort(methods, new MethodComparator());
 
-        InterfaceInfo intf = getService().getServiceInfo().getInterface();
+        InterfaceInfo intf;
+        if (getEndpointInfo() != null) {
+            intf = getEndpointInfo().getInterface();
+        } else {
+            intf = getService().getServiceInfos().get(0).getInterface();
+        }
 
+        Map<QName, Method> validMethods = new HashMap<QName, Method>();
+        for (Method m : methods) {
+            if (isValidMethod(m)) {
+                QName opName = getOperationName(intf, m);
+                validMethods.put(opName, m);
+            }
+        }
+            
+        
         for (OperationInfo o : intf.getOperations()) {
             Method selected = null;
-            for (Method m : methods) {
-                if (isValidMethod(m)) {
-                    QName opName = getOperationName(intf, m);
-
-                    if (o.getName().getNamespaceURI().equals(opName.getNamespaceURI())
-                        && isMatchOperation(o.getName().getLocalPart(), opName.getLocalPart())) {
-                    //if (o.getName().equals(opName)) {
-                        selected = m;
-                        break;
-                    }
+            for (Map.Entry<QName, Method> m : validMethods.entrySet()) {
+                QName opName = m.getKey();
+
+                if (o.getName().getNamespaceURI().equals(opName.getNamespaceURI())
+                    && isMatchOperation(o.getName().getLocalPart(), opName.getLocalPart())) {
+                    selected = m.getValue();
+                    break;
                 }
             }
 
@@ -544,6 +558,10 @@
         throw new IllegalStateException("ServiceConfiguration must provide a value!");
     }
 
+    public EndpointInfo getEndpointInfo() {
+        return getService().getEndpointInfo(getEndpointName());
+    }
+    
     public void setEndpointName(QName en) {
         this.endpointName = en;
     }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ClientFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ClientFactoryBeanTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ClientFactoryBeanTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ClientFactoryBeanTest.java Thu Apr 12 15:22:52 2007
@@ -58,7 +58,7 @@
         SOAPAddress soapAddress = endpointInfo.getExtensor(SOAPAddress.class);
         assertNotNull(soapAddress);
         
-        BindingInfo b = service.getServiceInfo().getBindings().iterator().next();
+        BindingInfo b = endpointInfo.getService().getBindings().iterator().next();
         
         assertTrue(b instanceof SoapBindingInfo);
         

Modified: incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java?view=diff&rev=528260&r1=528259&r2=528260
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ReflectionServiceFactoryTest.java Thu Apr 12 15:22:52 2007
@@ -48,7 +48,7 @@
     public void testUnwrappedBuild() throws Exception {
         Service service = createService(false);
         
-        ServiceInfo si = service.getServiceInfo();
+        ServiceInfo si = service.getServiceInfos().get(0);
         InterfaceInfo intf = si.getInterface();
         
         assertEquals(4, intf.getOperations().size());
@@ -80,7 +80,7 @@
     public void testWrappedBuild() throws Exception {
         Service service = createService(true);
         
-        ServiceInfo si = service.getServiceInfo();
+        ServiceInfo si = service.getServiceInfos().get(0);
         InterfaceInfo intf = si.getInterface();
         
         assertEquals(4, intf.getOperations().size());
@@ -159,7 +159,7 @@
         SOAPAddress soapAddress = endpointInfo.getExtensor(SOAPAddress.class);
         assertNotNull(soapAddress);
         
-        BindingInfo b = service.getServiceInfo().getBindings().iterator().next();
+        BindingInfo b = endpointInfo.getService().getBindings().iterator().next();
         
         assertTrue(b instanceof SoapBindingInfo);