Package org.codehaus.xfire.transport.http

Source Code of org.codehaus.xfire.transport.http.XFireServerTest

package org.codehaus.xfire.transport.http;

import java.net.MalformedURLException;

import org.apache.commons.httpclient.HttpVersion;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.fault.XFireFault;
import org.codehaus.xfire.server.http.XFireHttpServer;
import org.codehaus.xfire.service.AsyncService;
import org.codehaus.xfire.service.Echo;
import org.codehaus.xfire.service.EchoImpl;
import org.codehaus.xfire.service.OperationInfo;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.MessageBindingProvider;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.service.invoker.ObjectInvoker;
import org.codehaus.xfire.soap.Soap11Binding;
import org.codehaus.xfire.test.AbstractXFireTest;
import org.codehaus.xfire.transport.Transport;
import org.jdom.Element;

public class XFireServerTest
    extends AbstractXFireTest
{
    private Service service;
    private XFireHttpServer server;
    private Service asyncService;
    private Soap11Binding binding;
   
    public void setUp() throws Exception
    {
        super.setUp();
       
        ObjectServiceFactory osf = (ObjectServiceFactory) getServiceFactory();
        osf.setVoidOneWay(true);
        osf.setBindingCreationEnabled(false);
       
        service = getServiceFactory().create(Echo.class);
        service.setProperty(ObjectInvoker.SERVICE_IMPL_CLASS, EchoImpl.class);
       
        service.setBindingProvider(new MessageBindingProvider());

        binding = osf.createSoap11Binding(service, null, SoapHttpTransport.SOAP11_HTTP_BINDING);
       
        getServiceRegistry().register(service);

        osf.setBindingCreationEnabled(true);
        asyncService = getServiceFactory().create(AsyncService.class);
        getServiceRegistry().register(asyncService);

        server = new XFireHttpServer();
        server.setPort(8391);
        server.start();
    }

    protected XFire getXFire()
    {
        XFireFactory factory = XFireFactory.newInstance();
        return factory.getXFire();
    }

    protected void tearDown()
        throws Exception
    {
        server.stop();
       
        super.tearDown();
    }

    public void testXFireConstructor() throws Exception {
        XFireHttpServer server = new XFireHttpServer(XFireFactory.newInstance().getXFire());
        server.setPort(8392);
        server.start();
        server.stop();
    }
   
    public void testInvoke()
            throws Exception
    {
        Element root = new Element("root", "a", "urn:a");
        root.addContent("hello");
       
        Transport transport = getTransportManager().getTransport(SoapHttpTransport.SOAP11_HTTP_BINDING);

        Client client = new Client(transport, service, "http://localhost:8391/Echo");

//        HttpClientParams params = new HttpClientParams();
//        params.setParameter("http.protocol.version", HttpVersion.HTTP_1_1);
//        client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS, params);
//    
        OperationInfo op = service.getServiceInfo().getOperation("echo");
        Object[] response = client.invoke(op, new Object[] {root});
        assertNotNull(response);
        assertEquals(1, response.length);
       
        Element e = (Element) response[0];

        assertEquals(root.getName(), e.getName());
    }

    public void testSoapAction()
            throws Exception
    {
        Element root = new Element("root", "a", "urn:a");
        root.addContent("hello");
       
        Transport transport = getTransportManager().getTransport(SoapHttpTransport.SOAP11_HTTP_BINDING);

        Client client = new Client(transport, service, "http://localhost:8391/Echo");

        OperationInfo op = service.getServiceInfo().getOperation("echo");
        Soap11Binding binding = (Soap11Binding) service.getBinding(SoapHttpTransport.SOAP11_HTTP_BINDING);
        binding.setSoapAction(op, "echoAction");
       
        Object[] response = client.invoke(op, new Object[] {root});
        assertNotNull(response);
        assertEquals(1, response.length);
       
        Element e = (Element) response[0];

        assertEquals(root.getName(), e.getName());
    }
   
   
    public void testUndefinedEndpoint()
        throws Exception
    {
        binding.setUndefinedEndpointAllowed(false);
       
        Element root = new Element("root", "a", "urn:a");
        root.addContent("hello");

        Transport transport = getTransportManager()
                .getTransport(SoapHttpTransport.SOAP11_HTTP_BINDING);

        Client client = new Client(transport, service, "http://localhost:8391/Echo");

        OperationInfo op = service.getServiceInfo().getOperation("echo");
        try
        {
            Object[] response = client.invoke(op, new Object[] { root });
            fail("Invalid endpoint should not be invoked.");
        }
        catch (XFireFault f)
        {
            assertEquals("Invalid endpoint for service.", f.getMessage());
        }
    }
   
    public void testAsync()
        throws Exception
    {
        Element root = new Element("root", "a", "urn:a");
        root.addContent("hello");

        Transport transport = getTransportManager()
                .getTransport(SoapHttpTransport.SOAP11_HTTP_BINDING);

        Client client = new Client(transport, asyncService, "http://localhost:8391/AsyncService");
        Object[] response = client.invoke("echo", new Object[] { root });

        client.close();
       
        assertNull(response);
    }

    public void testProxy() throws MalformedURLException, XFireFault
    {
        Echo echo = (Echo) new XFireProxyFactory().create(service, "http://localhost:8391/Echo");
       
        Element root = new Element("root", "a", "urn:a");
        root.addContent("hello");
       
        Element e = echo.echo(root);
       
        assertEquals(root.getName(), e.getName());
    }
}
TOP

Related Classes of org.codehaus.xfire.transport.http.XFireServerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.