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/18 22:07:03 UTC

svn commit: r509004 [3/3] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/databinding/ api/src/main/java/org/apache/cxf/service/model/ common/common/src/main/java/org/apache/cxf/common/util/factory/ common/common/src/main/java/org/apache/cx...

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=509004&r1=509003&r2=509004
==============================================================================
--- 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 Sun Feb 18 13:06:58 2007
@@ -20,6 +20,7 @@
 package org.apache.cxf.jaxws.support;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -27,14 +28,25 @@
 
 import javax.wsdl.Operation;
 import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
 import javax.xml.ws.AsyncHandler;
 import javax.xml.ws.Service;
 
+import org.apache.cxf.binding.AbstractBindingFactory;
+import org.apache.cxf.binding.soap.SoapBindingFactory;
+import org.apache.cxf.binding.soap.model.SoapBindingInfo;
+import org.apache.cxf.databinding.source.SourceDataBinding;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.EndpointException;
+import org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor;
+import org.apache.cxf.jaxws.interceptors.ProviderInDatabindingInterceptor;
+import org.apache.cxf.jaxws.interceptors.ProviderOutDatabindingInterceptor;
 import org.apache.cxf.jaxws.interceptors.WebFaultOutInterceptor;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.service.factory.AbstractServiceConfiguration;
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
 import org.apache.cxf.service.factory.ServiceConstructionException;
+import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.FaultInfo;
 import org.apache.cxf.service.model.InterfaceInfo;
@@ -43,19 +55,26 @@
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.wsdl11.WSDLServiceBuilder;
 
+/**
+ * Constructs a service model from JAX-WS service endpoint classes. Works
+ * with both @@WebServiceProvider and @@WebService annotated classes.
+ *
+ * @see org.apache.cxf.jaxws.JaxWsServerFactoryBean
+ */
 public class JaxWsServiceFactoryBean extends AbstractJaxWsServiceFactoryBean {
 
-    private JaxWsServiceConfiguration jaxWsConfiguration;
+    private AbstractServiceConfiguration jaxWsConfiguration;
+
+    private JaxWsImplementorInfo implInfo;
 
     public JaxWsServiceFactoryBean() {
-        jaxWsConfiguration = new JaxWsServiceConfiguration();
-        getServiceConfigurations().add(0, jaxWsConfiguration);
         getIgnoredClasses().add(Service.class.getName());
     }
 
     public JaxWsServiceFactoryBean(JaxWsImplementorInfo implInfo) {
         this();
-        setJaxWsImplementorInfo(implInfo);
+        this.implInfo = implInfo;
+        initConfiguration(implInfo);
         this.serviceClass = implInfo.getEndpointClass();
     }
 
@@ -73,6 +92,31 @@
         super.initializeDefaultInterceptors();
 
         getService().getOutFaultInterceptors().add(new WebFaultOutInterceptor());
+
+        if (implInfo.isWebServiceProvider()) {
+            Class<?> type = implInfo.getProviderParameterType();
+            if (type.equals(SOAPMessage.class)) {
+                getService().getInInterceptors().add(new ProviderInDatabindingInterceptor(type));
+                // hack to get the SOAPMessage set before the SOAPHandlerInterceptor
+                ProviderOutDatabindingInterceptor out = new ProviderOutDatabindingInterceptor();
+                out.setPhase(Phase.PRE_PROTOCOL);
+                out.addBefore(SOAPHandlerInterceptor.class.getName());
+                getService().getOutInterceptors().add(out);
+                
+                getService().put(SOAPHandlerInterceptor.SAAJ_ENABLED, Boolean.TRUE);
+            } else {
+                getService().getInInterceptors().add(new ProviderInDatabindingInterceptor(type));
+                getService().getOutInterceptors().add(new ProviderOutDatabindingInterceptor());
+            }
+
+            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);
+                }
+            }
+        }
     }
 
     @Override
@@ -83,7 +127,7 @@
     @SuppressWarnings("unchecked")
     @Override
     protected void initializeWSDLOperation(InterfaceInfo intf, OperationInfo o, Method method) {
-        method = jaxWsConfiguration.getDeclaredMethod(method);
+        method = ((JaxWsServiceConfiguration)jaxWsConfiguration).getDeclaredMethod(method);
 
         super.initializeWSDLOperation(intf, o, method);
 
@@ -92,13 +136,14 @@
         try {
             // Find the Async method which returns a Response
             Method responseMethod = method.getDeclaringClass().getDeclaredMethod(method.getName() + "Async",
-                    method.getParameterTypes());
+                                                                                 method.getParameterTypes());
 
             // Find the Async method whic has a Future & AsyncResultHandler
             List<Class<?>> asyncHandlerParams = new ArrayList(Arrays.asList(method.getParameterTypes()));
             asyncHandlerParams.add(AsyncHandler.class);
-            Method futureMethod = method.getDeclaringClass().getDeclaredMethod(method.getName() + "Async",
-                    asyncHandlerParams.toArray(new Class<?>[asyncHandlerParams.size()]));
+            Method futureMethod = method.getDeclaringClass()
+                .getDeclaredMethod(method.getName() + "Async",
+                                   asyncHandlerParams.toArray(new Class<?>[asyncHandlerParams.size()]));
 
             getMethodDispatcher().bind(o, method, responseMethod, futureMethod);
 
@@ -111,9 +156,40 @@
         // rpc out-message-part-info class mapping
         Operation op = (Operation)o.getProperty(WSDLServiceBuilder.WSDL_OPERATION);
         initializeClassInfo(o, method, op == null ? null : op.getParameterOrdering());
+    }
 
+    @Override
+    protected void initializeWSDLOperations() {
+        if (implInfo.isWebServiceProvider()) {
+            initializeWSDLOperationsForProvider();
+        } else {
+            super.initializeWSDLOperations();
+        }
     }
 
+    protected void initializeWSDLOperationsForProvider() {
+        Type[] genericInterfaces = getServiceClass().getGenericInterfaces();
+        ParameterizedType pt = (ParameterizedType)genericInterfaces[0];
+        Class c = (Class)pt.getActualTypeArguments()[0];
+
+        try {
+            Method invoke = getServiceClass().getMethod("invoke", c);
+
+            // Bind each operation to the invoke method.
+            for (OperationInfo o : getService().getServiceInfo().getInterface().getOperations()) {
+                getMethodDispatcher().bind(o, invoke);
+            }
+
+        } catch (SecurityException e) {
+            throw new ServiceConstructionException(e);
+        } catch (NoSuchMethodException e) {
+            throw new ServiceConstructionException(e);
+        }
+
+        for (BindingInfo bi : getService().getServiceInfo().getBindings()) {
+            bi.setProperty(AbstractBindingFactory.DATABINDING_DISABLED, Boolean.TRUE);
+        }
+    }
 
     void initializeWrapping(OperationInfo o, Method selected) {
         Class responseWrapper = getResponseWrapper(selected);
@@ -125,15 +201,52 @@
             o.getInput().getMessageParts().get(0).setTypeClass(requestWrapper);
         }
     }
-    
+
+    /**
+     * Create a mock service model with two operations - invoke and
+     * invokeOneway.
+     */
+    // @Override
+    // protected InterfaceInfo createInterface(ServiceInfo serviceInfo) {
+    // if (jaxWsImplementorInfo.isWebServiceProvider()) {
+    // return createInterfaceForProvider(serviceInfo);
+    // } else {
+    // return super.createInterface(serviceInfo);
+    // }
+    // }
+    //
+    // protected InterfaceInfo createInterfaceForProvider(ServiceInfo
+    // serviceInfo) {
+    //
+    // InterfaceInfo intf = new InterfaceInfo(serviceInfo, getInterfaceName());
+    //
+    // String ns = getServiceNamespace();
+    // OperationInfo invoke = intf.addOperation(new QName(ns, "invoke"));
+    //
+    // MessageInfo input = invoke.createMessage(new QName(ns, "input"));
+    // invoke.setInput("input", input);
+    //
+    // input.addMessagePart("in");
+    //
+    // MessageInfo output = invoke.createMessage(new QName(ns, "output"));
+    // invoke.setOutput("output", output);
+    //
+    // output.addMessagePart("out");
+    // //
+    // // OperationInfo invokeOneWay = intf.addOperation(new
+    // // QName(getServiceNamespace(), "invokeOneWay"));
+    // // invokeOneWay.setInput("input", input);
+    //
+    // return intf;
+    // }
     private void setFaultClassInfo(OperationInfo o, Method selected) {
         Class[] types = selected.getExceptionTypes();
         for (int i = 0; i < types.length; i++) {
             Class exClass = types[i];
             Class beanClass = getBeanClass(exClass);
-            
+
             QName name = getFaultName(o.getInterface(), o, exClass, beanClass);
-            
+
             for (FaultInfo fi : o.getFaults()) {
                 for (MessagePartInfo mpi : fi.getMessageParts()) {
                     String ns = null;
@@ -142,8 +255,8 @@
                     } else {
                         ns = mpi.getTypeQName().getNamespaceURI();
                     }
-                    if (mpi.getConcreteName().getLocalPart().equals(name.getLocalPart()) 
-                            && name.getNamespaceURI().equals(ns)) {
+                    if (mpi.getConcreteName().getLocalPart().equals(name.getLocalPart())
+                        && name.getNamespaceURI().equals(ns)) {
                         fi.setProperty(Class.class.getName(), exClass);
                         mpi.setTypeClass(beanClass);
                     }
@@ -151,13 +264,12 @@
             }
         }
     }
-    
-    
+
     @Override
     protected Class<?> getBeanClass(Class<?> exClass) {
         try {
             Method getFaultInfo = exClass.getMethod("getFaultInfo", new Class[0]);
-            
+
             return getFaultInfo.getReturnType();
         } catch (SecurityException e) {
             throw new ServiceConstructionException(e);
@@ -179,14 +291,14 @@
                 MessagePartInfo part = input.getMessageParts().get(0);
                 part.setTypeClass(getRequestWrapper(method));
             }
-            
+
             if (o.hasOutput()) {
                 MessageInfo input = o.getOutput();
                 MessagePartInfo part = input.getMessageParts().get(0);
                 part.setTypeClass(getResponseWrapper(method));
                 part.setIndex(-1);
             }
-            
+
             setFaultClassInfo(o, method);
             o = o.getUnwrappedOperation();
         } else if (o.isUnwrappedCapable()) {
@@ -194,23 +306,23 @@
             // the WrapperClassOutInterceptor, and in general makes
             // life more confusing
             o.setUnwrappedOperation(null);
-         
+
             setFaultClassInfo(o, method);
         }
-        
-        Class<?>[] paramTypes = method.getParameterTypes(); 
+
+        Class<?>[] paramTypes = method.getParameterTypes();
         Type[] genericTypes = method.getGenericParameterTypes();
         for (int i = 0; i < paramTypes.length; i++) {
             Class paramType = paramTypes[i];
             Type genericType = genericTypes[i];
-            
+
             initializeParameter(o, method, i, paramType, genericType);
         }
-        
+
         // Initialize return type
         Class paramType = method.getReturnType();
         Type genericType = method.getGenericReturnType();
-        
+
         initializeParameter(o, method, -1, paramType, genericType);
 
         setFaultClassInfo(o, method);
@@ -239,7 +351,7 @@
             part.setProperty(ReflectionServiceFactoryBean.MODE_INOUT, Boolean.TRUE);
             initializeParameter(part, paramType, genericType);
             part.setIndex(i);
-            
+
             part = o.getOutput().getMessagePart(name);
             part.setProperty(ReflectionServiceFactoryBean.MODE_INOUT, Boolean.TRUE);
             initializeParameter(part, paramType, genericType);
@@ -249,5 +361,27 @@
 
     public void setJaxWsConfiguration(JaxWsServiceConfiguration jaxWsConfiguration) {
         this.jaxWsConfiguration = jaxWsConfiguration;
+    }
+
+    public JaxWsImplementorInfo getJaxWsImplementorInfo() {
+        return implInfo;
+    }
+
+    public void setJaxWsImplementorInfo(JaxWsImplementorInfo jaxWsImplementorInfo) {
+        this.implInfo = jaxWsImplementorInfo;
+
+        initConfiguration(jaxWsImplementorInfo);
+    }
+
+    protected final void initConfiguration(JaxWsImplementorInfo ii) {
+        if (ii.isWebServiceProvider()) {
+            jaxWsConfiguration = new WebServiceProviderConfiguration();
+            getServiceConfigurations().add(0, jaxWsConfiguration);
+            setWrapped(false);
+            setDataBinding(new SourceDataBinding());
+        } else {
+            jaxWsConfiguration = new JaxWsServiceConfiguration();
+            getServiceConfigurations().add(0, jaxWsConfiguration);
+        }
     }
 }

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/WebServiceProviderConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/WebServiceProviderConfiguration.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/WebServiceProviderConfiguration.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/WebServiceProviderConfiguration.java Sun Feb 18 13:06:58 2007
@@ -20,28 +20,39 @@
 package org.apache.cxf.jaxws.support;
 
 import java.io.IOException;
+import java.lang.reflect.Method;
 import java.net.URL;
 import java.util.ResourceBundle;
 
 import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.transform.Source;
 import javax.xml.ws.WebServiceException;
 
 import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.resource.URIResolver;
-import org.apache.cxf.service.factory.AbstractServiceConfiguration;
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 
-public class WebServiceProviderConfiguration extends AbstractServiceConfiguration {
+public class WebServiceProviderConfiguration extends JaxWsServiceConfiguration {
     private static final ResourceBundle BUNDLE = BundleUtils.getBundle(WebServiceProviderConfiguration.class);
 
     private JaxWsImplementorInfo implInfo;
     
     @Override
+    public Boolean isOperation(Method method) {
+        return method.getName().equals("invoke") 
+            && method.getParameterTypes().length == 1
+            && (Source.class.isAssignableFrom(method.getParameterTypes()[0])
+                || SOAPMessage.class.isAssignableFrom(method.getParameterTypes()[0]));
+    }
+
+
+    @Override
     public void setServiceFactory(ReflectionServiceFactoryBean serviceFactory) {
         super.setServiceFactory(serviceFactory);
-        implInfo = ((ProviderServiceFactoryBean) serviceFactory).getJaxWsImplementorInfo();
+        implInfo = ((JaxWsServiceFactoryBean) serviceFactory).getJaxWsImplementorInfo();
     }
 
 

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/MessageReplayObserver.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/MessageReplayObserver.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/MessageReplayObserver.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/MessageReplayObserver.java Sun Feb 18 13:06:58 2007
@@ -40,8 +40,8 @@
         try {
 
             InputStream in = message.getContent(InputStream.class);
-            while (in.available() > 0) {
-                in.read();
+            while (in.read() != -1) {
+                // do nothing
             }
             
             Conduit backChannel = message.getDestination().getBackChannel(message, null, null);
@@ -50,11 +50,12 @@
 
             OutputStream out = message.getContent(OutputStream.class);
             Assert.assertNotNull(out);
-            in = getClass().getResourceAsStream(responseMessage);
-            IOUtils.copy(in, out, 2045);
+            InputStream  res = getClass().getResourceAsStream(responseMessage);
+            IOUtils.copy(res, out, 2045);
 
-            out.close();
+            res.close();
             in.close();
+            out.close();
         } catch (Exception e) {
             e.printStackTrace();
         }

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,96 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.dispatch;
+
+import java.net.URL;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+import org.w3c.dom.Document;
+
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.jaxws.AbstractJaxWsTest;
+import org.apache.cxf.jaxws.MessageReplayObserver;
+import org.apache.cxf.jaxws.ServiceImpl;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.transport.Destination;
+import org.apache.hello_world_soap_http.SOAPService;
+import org.apache.hello_world_soap_http.types.SayHi;
+import org.apache.hello_world_soap_http.types.SayHiResponse;
+
+
+public class DispatchTest extends AbstractJaxWsTest {
+    private final QName serviceName = new QName("http://apache.org/hello_world_soap_http", "SOAPService");    
+    private final QName portName = new QName("http://apache.org/hello_world_soap_http", "SoapPort");
+    private final String address = "http://localhost:9000/SoapContext/SoapPort";
+    private Destination d;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        EndpointInfo ei = new EndpointInfo(null, "http://schemas.xmlsoap.org/soap/http");
+        ei.setAddress(address);
+
+        d = localTransport.getDestination(ei);
+    }
+    
+    public void testJAXB() throws Exception {
+        d.setMessageObserver(new MessageReplayObserver("/org/apache/cxf/jaxws/sayHiResponse.xml"));
+        
+        URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
+        assertNotNull(wsdl);
+
+        SOAPService service = new SOAPService(wsdl, serviceName);
+        assertNotNull(service);
+        
+        JAXBContext jc = JAXBContext.newInstance("org.apache.hello_world_soap_http.types");
+        Dispatch<Object> disp = service.createDispatch(portName, jc, Service.Mode.PAYLOAD);
+
+        SayHi s = new SayHi();
+
+        Object response = disp.invoke(s);
+        assertNotNull(response);
+        assertTrue(response instanceof SayHiResponse);
+    }
+    
+    public void testDOMSource() throws Exception {
+        ServiceImpl service = 
+            new ServiceImpl(getBus(), 
+                            getClass().getResource("/wsdl/hello_world.wsdl"), 
+                            serviceName,
+                            null);
+        
+        Dispatch<Source> disp = service.createDispatch(portName, Source.class, Service.Mode.MESSAGE);
+        disp.getRequestContext().put(Dispatch.ENDPOINT_ADDRESS_PROPERTY, address);
+        
+        d.setMessageObserver(new MessageReplayObserver("/org/apache/cxf/jaxws/sayHiResponse.xml"));
+        
+        Document doc = DOMUtils.readXml(getResourceAsStream("/org/apache/cxf/jaxws/sayHi.xml"));
+        DOMSource source = new DOMSource(doc);
+        Source res = disp.invoke(source);
+        assertNotNull(res);
+        
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/dispatch/DispatchTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/DOMSourcePayloadProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/DOMSourcePayloadProvider.java?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/DOMSourcePayloadProvider.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/DOMSourcePayloadProvider.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxws.provider;
+
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider
+@ServiceMode(value = Service.Mode.PAYLOAD)
+@javax.xml.ws.BindingType(value = "http://cxf.apache.org/bindings/xformat")
+public class DOMSourcePayloadProvider implements Provider<DOMSource> {
+
+    public DOMSourcePayloadProvider() {
+    }
+
+    public DOMSource invoke(DOMSource request) {
+        return request;
+    }
+}

Added: 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=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/ProviderServiceFactoryTest.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,217 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.provider;
+
+import java.net.URL;
+
+import org.w3c.dom.Node;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.binding.AbstractBindingFactory;
+import org.apache.cxf.binding.Binding;
+import org.apache.cxf.binding.soap.SoapBinding;
+import org.apache.cxf.binding.soap.model.SoapBindingInfo;
+import org.apache.cxf.binding.xml.XMLBinding;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.jaxws.AbstractJaxWsTest;
+import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
+import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
+import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.model.InterfaceInfo;
+import org.apache.cxf.transport.local.LocalTransportFactory;
+import org.apache.hello_world_soap_http.HWSoapMessageProvider;
+
+public class ProviderServiceFactoryTest extends AbstractJaxWsTest {
+    public void testFromWSDL() throws Exception {
+        URL resource = getClass().getResource("/wsdl/hello_world.wsdl");
+        assertNotNull(resource);
+
+        JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(HWSoapMessageProvider.class);
+        JaxWsServiceFactoryBean bean = new JaxWsServiceFactoryBean(implInfo);
+        bean.setWsdlURL(resource);
+
+        Bus bus = getBus();
+        bean.setBus(bus);
+        bean.setServiceClass(HWSoapMessageProvider.class);
+
+        Service service = bean.create();
+
+        assertEquals("SOAPService", service.getName().getLocalPart());
+        assertEquals("http://apache.org/hello_world_soap_http", service.getName().getNamespaceURI());
+
+        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        assertNotNull(intf);
+
+        JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+        svrFactory.setBus(bus);
+        svrFactory.setServiceFactory(bean);
+        svrFactory.setStart(false);
+
+        ServerImpl server = (ServerImpl)svrFactory.create();
+
+        Endpoint endpoint = server.getEndpoint();
+        Binding binding = endpoint.getBinding();
+        assertTrue(binding instanceof SoapBinding);
+        assertEquals(Boolean.TRUE, endpoint.getEndpointInfo().getBinding()
+            .getProperty(AbstractBindingFactory.DATABINDING_DISABLED));
+    }
+
+    public void testXMLBindingFromCode() throws Exception {
+        JaxWsServiceFactoryBean bean = new JaxWsServiceFactoryBean();
+        bean.setServiceClass(DOMSourcePayloadProvider.class);
+        bean.setBus(getBus());
+
+        Service service = bean.create();
+
+        assertEquals("DOMSourcePayloadProviderService", service.getName().getLocalPart());
+
+        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        assertNotNull(intf);
+
+        JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+        svrFactory.setBus(getBus());
+        svrFactory.setServiceFactory(bean);
+        String address = "http://localhost:9000/test";
+        svrFactory.setAddress(address);
+
+        ServerImpl server = (ServerImpl)svrFactory.create();
+
+        assertEquals(1, service.getServiceInfo().getEndpoints().size());
+
+        Endpoint endpoint = server.getEndpoint();
+        Binding binding = endpoint.getBinding();
+        assertTrue(binding instanceof XMLBinding);
+        
+        Node res = invoke(address, LocalTransportFactory.TRANSPORT_ID, 
+                          "/org/apache/cxf/jaxws/provider/sayHi.xml");
+        
+        addNamespace("j", "http://service.jaxws.cxf.apache.org/");
+        assertValid("/j:sayHi", res);
+    }
+
+    public void testSOAPBindingFromCode() throws Exception {
+        JaxWsServiceFactoryBean bean = new JaxWsServiceFactoryBean();
+        bean.setServiceClass(SOAPSourcePayloadProvider.class);
+        bean.setBus(getBus());
+
+        Service service = bean.create();
+
+        assertEquals("SOAPSourcePayloadProviderService", service.getName().getLocalPart());
+
+        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        assertNotNull(intf);
+        assertEquals(1, intf.getOperations().size());
+
+        JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+        svrFactory.setBus(getBus());
+        svrFactory.setServiceFactory(bean);
+        String address = "http://localhost:9000/test";
+        svrFactory.setAddress(address);
+
+        ServerImpl server = (ServerImpl)svrFactory.create();
+
+        // See if our endpoint was created correctly
+        assertEquals(1, service.getServiceInfo().getEndpoints().size());
+
+        Endpoint endpoint = server.getEndpoint();
+        Binding binding = endpoint.getBinding();
+        assertTrue(binding instanceof SoapBinding);
+
+        SoapBindingInfo sb = (SoapBindingInfo)endpoint.getEndpointInfo().getBinding();
+        assertEquals("document", sb.getStyle());
+        assertEquals(false, bean.isWrapped());
+        assertEquals(Boolean.TRUE, sb.getProperty(AbstractBindingFactory.DATABINDING_DISABLED));
+
+        assertEquals(1, sb.getOperations().size());
+        Node res = invoke(address, LocalTransportFactory.TRANSPORT_ID, "/org/apache/cxf/jaxws/sayHi.xml");
+        
+        addNamespace("j", "http://service.jaxws.cxf.apache.org/");
+        assertValid("/s:Envelope/s:Body/j:sayHi", res);
+    }
+    
+    public void testSAAJProviderCodeFirst() throws Exception {
+        JaxWsServiceFactoryBean bean = new JaxWsServiceFactoryBean();
+        bean.setServiceClass(SAAJProvider.class);
+        bean.setBus(getBus());
+
+        Service service = bean.create();
+
+        assertEquals("SAAJProviderService", service.getName().getLocalPart());
+
+        InterfaceInfo intf = service.getServiceInfo().getInterface();
+        assertNotNull(intf);
+        assertEquals(1, intf.getOperations().size());
+
+        JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+        svrFactory.setBus(getBus());
+        svrFactory.setServiceFactory(bean);
+        String address = "http://localhost:9000/test";
+        svrFactory.setAddress(address);
+
+        ServerImpl server = (ServerImpl)svrFactory.create();
+
+        Endpoint endpoint = server.getEndpoint();
+        Binding binding = endpoint.getBinding();
+        assertTrue(binding instanceof SoapBinding);
+
+        SoapBindingInfo sb = (SoapBindingInfo)endpoint.getEndpointInfo().getBinding();
+        assertEquals("document", sb.getStyle());
+        assertEquals(false, bean.isWrapped());
+        assertEquals(Boolean.TRUE, sb.getProperty(AbstractBindingFactory.DATABINDING_DISABLED));
+
+        assertEquals(1, sb.getOperations().size());
+        Node res = invoke(address, LocalTransportFactory.TRANSPORT_ID, "/org/apache/cxf/jaxws/sayHi.xml");
+        
+        addNamespace("j", "http://service.jaxws.cxf.apache.org/");
+        assertValid("/s:Envelope/s:Body/j:sayHi", res);
+    }
+    
+    public void testStreamSourceProviderCodeFirst() throws Exception {
+        JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+        svrFactory.setServiceClass(StreamSourcePayloadProvider.class);
+        svrFactory.setBus(getBus());
+        String address = "http://localhost:9000/test";
+        svrFactory.setAddress(address);
+
+        svrFactory.create();
+
+        Node res = invoke(address, LocalTransportFactory.TRANSPORT_ID, "/org/apache/cxf/jaxws/sayHi.xml");
+        
+        addNamespace("j", "http://service.jaxws.cxf.apache.org/");
+        assertValid("/s:Envelope/s:Body/j:sayHi", res);
+    }
+    
+
+    public void testSourceMessageProviderCodeFirst() throws Exception {
+        JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+        svrFactory.setServiceClass(SourceMessageProvider.class);
+        svrFactory.setBus(getBus());
+        String address = "http://localhost:9000/test";
+        svrFactory.setAddress(address);
+
+        svrFactory.create();
+
+        Node res = invoke(address, LocalTransportFactory.TRANSPORT_ID, "/org/apache/cxf/jaxws/sayHi.xml");
+        
+        addNamespace("j", "http://service.jaxws.cxf.apache.org/");
+        assertValid("/s:Envelope/s:Body/j:sayHi", res);
+    }
+}

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxws.provider;
+
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.Provider;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider()
+public class SAAJProvider implements Provider<SOAPMessage> {
+
+    public SAAJProvider() {
+    }
+
+    public SOAPMessage invoke(SOAPMessage request) {
+        return request;
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SAAJProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxws.provider;
+
+import javax.xml.transform.Source;
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider()
+@ServiceMode(value = Service.Mode.PAYLOAD)
+public class SOAPSourcePayloadProvider implements Provider<Source> {
+
+    public SOAPSourcePayloadProvider() {
+    }
+
+    public Source invoke(Source request) {
+        return request;
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SOAPSourcePayloadProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxws.provider;
+
+import javax.xml.transform.Source;
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider
+@ServiceMode(value = Service.Mode.MESSAGE)
+public class SourceMessageProvider implements Provider<Source> {
+
+    public SourceMessageProvider() {
+    }
+
+    public Source invoke(Source request) {
+        return request;
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/SourceMessageProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java Sun Feb 18 13:06:58 2007
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxws.provider;
+
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+
+@WebServiceProvider()
+@ServiceMode(value = Service.Mode.PAYLOAD)
+@javax.xml.ws.BindingType(value = "http://cxf.apache.org/bindings/xformat")
+public class StreamSourcePayloadProvider implements Provider<StreamSource> {
+
+    public StreamSourcePayloadProvider() {
+    }
+
+    public StreamSource invoke(StreamSource request) {
+        return request;
+    }
+}

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/StreamSourcePayloadProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml?view=auto&rev=509004
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml (added)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml Sun Feb 18 13:06:58 2007
@@ -0,0 +1,21 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<sayHi xmlns="http://service.jaxws.cxf.apache.org/">
+	<text>hi</text>
+</sayHi>
\ No newline at end of file

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/provider/sayHi.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

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=509004&r1=509003&r2=509004
==============================================================================
--- 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 Sun Feb 18 13:06:58 2007
@@ -26,6 +26,7 @@
 import org.apache.cxf.BusException;
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.binding.soap.SoapBindingInfoFactoryBean;
+import org.apache.cxf.binding.soap.model.SoapBindingInfo;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.EndpointException;
 import org.apache.cxf.service.Service;
@@ -110,8 +111,13 @@
             }
         }
         
+        // Get the Service from the ServiceFactory if specified
+        Service service = serviceFactory.getService();
+        BindingInfo bindingInfo = createBindingInfo();
+        service.getServiceInfo().addBinding(bindingInfo);
+        
         // SOAP nonsense
-        if (getBindingFactory() instanceof SoapBindingInfoFactoryBean) {
+        if (bindingInfo instanceof SoapBindingInfo) {
             ((SoapBindingInfoFactoryBean) getBindingFactory()).setTransportURI(transportId);
             transportId = "http://schemas.xmlsoap.org/wsdl/soap/";
         }
@@ -121,12 +127,6 @@
         DestinationFactoryManager dfm = getBus().getExtension(DestinationFactoryManager.class);
         destinationFactory = dfm.getDestinationFactory(transportId);
         
-        // Get the Service from the ServiceFactory if specified
-        Service service = serviceFactory.getService();
-        getBindingFactory().setServiceFactory(serviceFactory);
-        BindingInfo bindingInfo = getBindingFactory().create();
-        service.getServiceInfo().addBinding(bindingInfo);
-        
         EndpointInfo ei = new EndpointInfo(service.getServiceInfo(), transportId);
         ei.setName(endpointName);
         ei.setAddress(getAddress());
@@ -143,7 +143,11 @@
         return ei;
     }
 
-    
+    protected BindingInfo createBindingInfo() {
+        getBindingFactory().setServiceFactory(serviceFactory);
+        return getBindingFactory().create();
+    }
+
     public String getAddress() {
         return address;
     }

Modified: incubator/cxf/trunk/rt/ws/addr/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/pom.xml?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/rt/ws/addr/pom.xml (original)
+++ incubator/cxf/trunk/rt/ws/addr/pom.xml Sun Feb 18 13:06:58 2007
@@ -73,5 +73,16 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        
+        <dependency>
+            <groupId>com.sun.xml.messaging.saaj</groupId>
+            <artifactId>saaj-impl</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>1.1</version>
+        </dependency>
     </dependencies>
 </project>

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchXMLClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchXMLClientServerTest.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchXMLClientServerTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchXMLClientServerTest.java Sun Feb 18 13:06:58 2007
@@ -98,7 +98,6 @@
         Dispatch<Source> disp = service.createDispatch(portName, Source.class, Service.Mode.MESSAGE);
         Source source = disp.invoke(reqMsg);
         assertNotNull(source);
-        assertTrue(source instanceof StreamSource);
                 
         String streamString = XMLUtils.toString(source); 
         Document doc = XMLUtils.parse(streamString);

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWDOMSourcePayloadXMLBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWDOMSourcePayloadXMLBindingProvider.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWDOMSourcePayloadXMLBindingProvider.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWDOMSourcePayloadXMLBindingProvider.java Sun Feb 18 13:06:58 2007
@@ -31,6 +31,8 @@
 
 import org.w3c.dom.Document;
 
+import org.apache.cxf.helpers.DOMUtils;
+
 //The following wsdl file is used.
 //wsdlLocation = "/trunk/testutils/src/main/resources/wsdl/hello_world_rpc_lit.wsdl"
 @WebServiceProvider(portName = "XMLProviderPort",
@@ -53,13 +55,14 @@
 
         try {
             factory = DocumentBuilderFactory.newInstance();
-            factory.setValidating(true);
+            factory.setNamespaceAware(true);
             builder = factory.newDocumentBuilder();
             InputStream greetMeResponse = getClass().getResourceAsStream(
                     "resources/XML_GreetMeDocLiteralResp.xml");
 
             document = builder.parse(greetMeResponse);
-            response = new DOMSource(document);
+            DOMUtils.writeXml(document, System.out);
+            response = new DOMSource(document.getDocumentElement());
         } catch (Exception e) {
             e.printStackTrace();
         }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProvider.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProvider.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProvider.java Sun Feb 18 13:06:58 2007
@@ -105,7 +105,7 @@
 
         try {
             factory = DocumentBuilderFactory.newInstance();
-            factory.setValidating(true);
+            factory.setNamespaceAware(true);
             builder = factory.newDocumentBuilder();
             InputStream greetMeResponse = getClass().getResourceAsStream(fileName);
 

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProviderHttpBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProviderHttpBinding.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProviderHttpBinding.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/RestSourcePayloadProviderHttpBinding.java Sun Feb 18 13:06:58 2007
@@ -28,6 +28,7 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.dom.DOMSource;
+import javax.xml.ws.BindingType;
 import javax.xml.ws.Provider;
 import javax.xml.ws.Service;
 import javax.xml.ws.ServiceMode;
@@ -39,6 +40,7 @@
 
 @WebServiceProvider()
 @ServiceMode(value = Service.Mode.PAYLOAD)
+@BindingType("http://cxf.apache.org/bindings/xformat")
 public class RestSourcePayloadProviderHttpBinding implements Provider<DOMSource> {
 
     @Resource
@@ -97,7 +99,7 @@
 
         try {
             factory = DocumentBuilderFactory.newInstance();
-            factory.setValidating(true);
+            factory.setNamespaceAware(true);
             builder = factory.newDocumentBuilder();
             InputStream greetMeResponse = getClass().getResourceAsStream(fileName);
 

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/Server.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/Server.java?view=diff&rev=509004&r1=509003&r2=509004
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/Server.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/rest/Server.java Sun Feb 18 13:06:58 2007
@@ -29,9 +29,8 @@
         Object implementor = new RestSourcePayloadProvider();
         String address = "http://localhost:9023/XMLService/RestProviderPort/Customer";
         Endpoint.publish(address, implementor);
-    }        
-
-
+    }
+    
     public static void main(String[] args) {
         try {
             Server s = new Server();