Package org.codehaus.xfire.spring.remoting

Source Code of org.codehaus.xfire.spring.remoting.XFireWebAnnotationsHandlerMappingTest

package org.codehaus.xfire.spring.remoting;

/**
* @author Arjen Poutsma
*/

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Properties;

import org.codehaus.xfire.aegis.AbstractXFireAegisTest;
import org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry;
import org.codehaus.xfire.annotations.AnnotationServiceFactory;
import org.codehaus.xfire.annotations.AnnotationsEmptyValidator;
import org.codehaus.xfire.annotations.WebAnnotations;
import org.codehaus.xfire.annotations.WebMethodAnnotation;
import org.codehaus.xfire.annotations.WebServiceAnnotation;
import org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping;
import org.codehaus.xfire.test.EchoImpl;
import org.easymock.MockControl;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.web.context.support.StaticWebApplicationContext;

public class XFireWebAnnotationsHandlerMappingTest
        extends AbstractXFireAegisTest
{
    private Jsr181HandlerMapping handlerMapping;
    private MockControl control;
    private WebAnnotations webAnnotations;


    public void setUp()
            throws Exception
    {
        super.setUp();
        handlerMapping = new Jsr181HandlerMapping();
        control = MockControl.createControl(WebAnnotations.class);
        webAnnotations = (WebAnnotations) control.getMock();
        handlerMapping.setWebAnnotations(webAnnotations);
        handlerMapping.setXfire(getXFire());
        handlerMapping.setTypeMappingRegistry(new DefaultTypeMappingRegistry(true));
      
    }

    public void testHandler()
            throws Exception
    {
        StaticWebApplicationContext appContext = new StaticWebApplicationContext();
        appContext.registerSingleton("echo", EchoImpl.class, new MutablePropertyValues());

        webAnnotations.hasWebServiceAnnotation(EchoImpl.class);
        control.setReturnValue(true);
        webAnnotations.hasHandlerChainAnnotation(EchoImpl.class);
        control.setReturnValue(false);
        webAnnotations.hasSOAPBindingAnnotation(EchoImpl.class);
        control.setReturnValue(false);
        webAnnotations.hasWebServiceAnnotation(EchoImpl.class);
        control.setReturnValue(true);
        WebServiceAnnotation serviceAnnotation = new WebServiceAnnotation();
        serviceAnnotation.setServiceName("EchoService");
        webAnnotations.getWebServiceAnnotation(EchoImpl.class);
        control.setReturnValue(serviceAnnotation);
        webAnnotations.getWebServiceAnnotation(EchoImpl.class);
        control.setReturnValue(serviceAnnotation);
       
        Method echoMethod = EchoImpl.class.getMethod("echo", new Class[]{String.class});
        webAnnotations.hasWebMethodAnnotation(echoMethod);
        control.setDefaultReturnValue(true);
       
        webAnnotations.hasWebMethodAnnotation(echoMethod);
        control.setDefaultReturnValue(true);
       
        WebMethodAnnotation wma = new WebMethodAnnotation();
        wma.setOperationName("echo");
        webAnnotations.getWebMethodAnnotation(echoMethod);
        control.setDefaultReturnValue(wma);
       
        webAnnotations.hasWebParamAnnotation(echoMethod, 0);
        control.setDefaultReturnValue(false);
        webAnnotations.hasWebResultAnnotation(echoMethod);
        control.setDefaultReturnValue(false);
        webAnnotations.hasOnewayAnnotation(echoMethod);
        control.setDefaultReturnValue(false);
        webAnnotations.getServiceProperties(EchoImpl.class);
        control.setDefaultReturnValue(new Properties());
        webAnnotations.getInHandlers(EchoImpl.class);
        control.setDefaultReturnValue(Collections.EMPTY_LIST);
        webAnnotations.getOutHandlers(EchoImpl.class);
        control.setDefaultReturnValue(Collections.EMPTY_LIST);
        webAnnotations.getFaultHandlers(EchoImpl.class);
        control.setDefaultReturnValue(Collections.EMPTY_LIST);
       
        control.replay();

        String urlPrefix = "/services/";
        handlerMapping.setUrlPrefix(urlPrefix);
       
        handlerMapping.setValidator(new AnnotationsEmptyValidator());
        handlerMapping.setApplicationContext(appContext);
       
        MockHttpServletRequest request = new MockHttpServletRequest("GET", urlPrefix + "EchoService");
        Object handler = handlerMapping.getHandler(request);
        assertNotNull("No valid handler is returned", handler);

        control.verify();
    }

    public void testNoAnnotation()
            throws Exception
    {
        StaticWebApplicationContext appContext = new StaticWebApplicationContext();
        appContext.registerSingleton("echo", EchoImpl.class, new MutablePropertyValues());

        webAnnotations.hasWebServiceAnnotation(EchoImpl.class);
        control.setReturnValue(false);

        control.replay();
       
        handlerMapping.setValidator(new AnnotationsEmptyValidator());
        handlerMapping.setApplicationContext(appContext);
       

        MockHttpServletRequest request = new MockHttpServletRequest("GET", "/services/EchoService");
        Object handler = handlerMapping.getHandler(request);
        assertNull("Handler is returned", handler);

        control.verify();
    }
}
TOP

Related Classes of org.codehaus.xfire.spring.remoting.XFireWebAnnotationsHandlerMappingTest

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.