package org.springframework.ws.config.annotation; import java.util.List; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.core.MethodParameter; import org.springframework.ws.context.MessageContext; import org.springframework.ws.server.EndpointInterceptor; import org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter; import org.springframework.ws.server.endpoint.adapter.method.MethodArgumentResolver; import org.springframework.ws.server.endpoint.adapter.method.MethodReturnValueHandler; import org.springframework.ws.server.endpoint.interceptor.EndpointInterceptorAdapter; import org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping; /** * @author Arjen Poutsma */ public class WsConfigurerAdapterTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(); applicationContext.register(TestConfig.class); applicationContext.refresh(); this.applicationContext = applicationContext; } @Test public void interceptors() { PayloadRootAnnotationMethodEndpointMapping endpointMapping = this.applicationContext.getBean( PayloadRootAnnotationMethodEndpointMapping.class); assertEquals(0, endpointMapping.getOrder()); EndpointInterceptor[] interceptors = endpointMapping.getInterceptors(); assertEquals(1, interceptors.length); assertTrue(interceptors[0] instanceof MyInterceptor); } @Test public void argumentResolvers() { DefaultMethodEndpointAdapter endpointAdapter = this.applicationContext.getBean(DefaultMethodEndpointAdapter.class); List<MethodArgumentResolver> argumentResolvers = endpointAdapter.getCustomMethodArgumentResolvers(); assertEquals(1, argumentResolvers.size()); assertTrue(argumentResolvers.get(0) instanceof MyMethodArgumentResolver); argumentResolvers = endpointAdapter.getMethodArgumentResolvers(); assertFalse(argumentResolvers.isEmpty()); } @Test public void returnValueHandlers() { DefaultMethodEndpointAdapter endpointAdapter = this.applicationContext.getBean(DefaultMethodEndpointAdapter.class); List<MethodReturnValueHandler> returnValueHandlers = endpointAdapter.getCustomMethodReturnValueHandlers(); assertEquals(1, returnValueHandlers.size()); assertTrue(returnValueHandlers.get(0) instanceof MyReturnValueHandler); returnValueHandlers = endpointAdapter.getMethodReturnValueHandlers(); assertFalse(returnValueHandlers.isEmpty()); } @Configuration @EnableWs public static class TestConfig extends WsConfigurerAdapter { @Override public void addInterceptors(List<EndpointInterceptor> interceptors) { interceptors.add(new MyInterceptor()); } @Override public void addArgumentResolvers(List<MethodArgumentResolver> argumentResolvers) { argumentResolvers.add(new MyMethodArgumentResolver()); } @Override public void addReturnValueHandlers( List<MethodReturnValueHandler> returnValueHandlers) { returnValueHandlers.add(new MyReturnValueHandler()); } } public static class MyInterceptor extends EndpointInterceptorAdapter { } public static class MyMethodArgumentResolver implements MethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter) { return false; } @Override public Object resolveArgument(MessageContext messageContext, MethodParameter parameter) throws Exception { return null; } } public static class MyReturnValueHandler implements MethodReturnValueHandler { @Override public boolean supportsReturnType(MethodParameter returnType) { return false; } @Override public void handleReturnValue(MessageContext messageContext, MethodParameter returnType, Object returnValue) throws Exception { } } }