@ -1,5 +1,5 @@
/ *
/ *
* Copyright 2002 - 2011 the original author or authors .
* Copyright 2002 - 2012 the original author or authors .
*
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* you may not use this file except in compliance with the License .
@ -36,19 +36,19 @@ import org.springframework.web.context.request.ServletWebRequest;
/ * *
/ * *
* Test fixture for { @link InvocableHandlerMethod } unit tests .
* Test fixture for { @link InvocableHandlerMethod } unit tests .
*
*
* @author Rossen Stoyanchev
* @author Rossen Stoyanchev
* /
* /
public class InvocableHandlerMethodTests {
public class InvocableHandlerMethodTests {
private InvocableHandlerMethod handleMethod ;
private InvocableHandlerMethod handler Method ;
private NativeWebRequest webRequest ;
private NativeWebRequest webRequest ;
@Before
@Before
public void setUp ( ) throws Exception {
public void setUp ( ) throws Exception {
Method method = Handler . class . getDeclaredMethod ( "handle" , Integer . class , String . class ) ;
Method method = Handler . class . getDeclaredMethod ( "handle" , Integer . class , String . class ) ;
this . handleMethod = new InvocableHandlerMethod ( new Handler ( ) , method ) ;
this . handler Method = new InvocableHandlerMethod ( new Handler ( ) , method ) ;
this . webRequest = new ServletWebRequest ( new MockHttpServletRequest ( ) , new MockHttpServletResponse ( ) ) ;
this . webRequest = new ServletWebRequest ( new MockHttpServletRequest ( ) , new MockHttpServletResponse ( ) ) ;
}
}
@ -60,14 +60,14 @@ public class InvocableHandlerMethodTests {
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( stringResolver ) ;
composite . addResolver ( stringResolver ) ;
handleMethod . setHandlerMethodArgumentResolvers ( composite ) ;
handler Method . setHandlerMethodArgumentResolvers ( composite ) ;
Object returnValue = handleMethod . invokeForRequest ( webRequest , null ) ;
Object returnValue = handler Method . invokeForRequest ( webRequest , null ) ;
assertEquals ( 1 , intResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( 1 , intResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( 1 , stringResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( 1 , stringResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( "99-value" , returnValue ) ;
assertEquals ( "99-value" , returnValue ) ;
assertEquals ( "intArg" , intResolver . getResolvedParameters ( ) . get ( 0 ) . getParameterName ( ) ) ;
assertEquals ( "intArg" , intResolver . getResolvedParameters ( ) . get ( 0 ) . getParameterName ( ) ) ;
assertEquals ( "stringArg" , stringResolver . getResolvedParameters ( ) . get ( 0 ) . getParameterName ( ) ) ;
assertEquals ( "stringArg" , stringResolver . getResolvedParameters ( ) . get ( 0 ) . getParameterName ( ) ) ;
}
}
@ -80,10 +80,10 @@ public class InvocableHandlerMethodTests {
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( stringResolver ) ;
composite . addResolver ( stringResolver ) ;
handleMethod . setHandlerMethodArgumentResolvers ( composite ) ;
handler Method . setHandlerMethodArgumentResolvers ( composite ) ;
Object returnValue = handleMethod . invokeForRequest ( webRequest , null ) ;
Object returnValue = handler Method . invokeForRequest ( webRequest , null ) ;
assertEquals ( 1 , intResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( 1 , intResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( 1 , stringResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( 1 , stringResolver . getResolvedParameters ( ) . size ( ) ) ;
assertEquals ( "null-null" , returnValue ) ;
assertEquals ( "null-null" , returnValue ) ;
@ -92,7 +92,7 @@ public class InvocableHandlerMethodTests {
@Test
@Test
public void cannotResolveArg ( ) throws Exception {
public void cannotResolveArg ( ) throws Exception {
try {
try {
handleMethod . invokeForRequest ( webRequest , null ) ;
handler Method . invokeForRequest ( webRequest , null ) ;
fail ( "Expected exception" ) ;
fail ( "Expected exception" ) ;
} catch ( IllegalStateException ex ) {
} catch ( IllegalStateException ex ) {
assertTrue ( ex . getMessage ( ) . contains ( "No suitable resolver for argument [0] [type=java.lang.Integer]" ) ) ;
assertTrue ( ex . getMessage ( ) . contains ( "No suitable resolver for argument [0] [type=java.lang.Integer]" ) ) ;
@ -101,7 +101,7 @@ public class InvocableHandlerMethodTests {
@Test
@Test
public void resolveProvidedArg ( ) throws Exception {
public void resolveProvidedArg ( ) throws Exception {
Object returnValue = handleMethod . invokeForRequest ( webRequest , null , 99 , "value" ) ;
Object returnValue = handler Method . invokeForRequest ( webRequest , null , 99 , "value" ) ;
assertEquals ( String . class , returnValue . getClass ( ) ) ;
assertEquals ( String . class , returnValue . getClass ( ) ) ;
assertEquals ( "99-value" , returnValue ) ;
assertEquals ( "99-value" , returnValue ) ;
@ -115,21 +115,21 @@ public class InvocableHandlerMethodTests {
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( stringResolver ) ;
composite . addResolver ( stringResolver ) ;
handleMethod . setHandlerMethodArgumentResolvers ( composite ) ;
handler Method . setHandlerMethodArgumentResolvers ( composite ) ;
Object returnValue = handleMethod . invokeForRequest ( webRequest , null , 2 , "value2" ) ;
Object returnValue = handler Method . invokeForRequest ( webRequest , null , 2 , "value2" ) ;
assertEquals ( "2-value2" , returnValue ) ;
assertEquals ( "2-value2" , returnValue ) ;
}
}
@Test
@Test
public void exceptionInResolvingArg ( ) throws Exception {
public void exceptionInResolvingArg ( ) throws Exception {
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
composite . addResolver ( new ExceptionRaisingArgumentResolver ( ) ) ;
composite . addResolver ( new ExceptionRaisingArgumentResolver ( ) ) ;
handleMethod . setHandlerMethodArgumentResolvers ( composite ) ;
handler Method . setHandlerMethodArgumentResolvers ( composite ) ;
try {
try {
handleMethod . invokeForRequest ( webRequest , null ) ;
handler Method . invokeForRequest ( webRequest , null ) ;
fail ( "Expected exception" ) ;
fail ( "Expected exception" ) ;
} catch ( HttpMessageNotReadableException ex ) {
} catch ( HttpMessageNotReadableException ex ) {
// Expected..
// Expected..
@ -145,10 +145,10 @@ public class InvocableHandlerMethodTests {
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
HandlerMethodArgumentResolverComposite composite = new HandlerMethodArgumentResolverComposite ( ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( intResolver ) ;
composite . addResolver ( stringResolver ) ;
composite . addResolver ( stringResolver ) ;
handleMethod . setHandlerMethodArgumentResolvers ( composite ) ;
handler Method . setHandlerMethodArgumentResolvers ( composite ) ;
try {
try {
handleMethod . invokeForRequest ( webRequest , null ) ;
handler Method . invokeForRequest ( webRequest , null ) ;
fail ( "Expected exception" ) ;
fail ( "Expected exception" ) ;
} catch ( IllegalArgumentException ex ) {
} catch ( IllegalArgumentException ex ) {
assertNotNull ( "Exception not wrapped" , ex . getCause ( ) ) ;
assertNotNull ( "Exception not wrapped" , ex . getCause ( ) ) ;
@ -200,10 +200,10 @@ public class InvocableHandlerMethodTests {
new InvocableHandlerMethod ( handler , method ) . invokeForRequest ( webRequest , null ) ;
new InvocableHandlerMethod ( handler , method ) . invokeForRequest ( webRequest , null ) ;
fail ( "Expected exception" ) ;
fail ( "Expected exception" ) ;
}
}
@SuppressWarnings ( "unused" )
@SuppressWarnings ( "unused" )
private static class Handler {
private static class Handler {
public String handle ( Integer intArg , String stringArg ) {
public String handle ( Integer intArg , String stringArg ) {
return intArg + "-" + stringArg ;
return intArg + "-" + stringArg ;
}
}
@ -211,19 +211,19 @@ public class InvocableHandlerMethodTests {
@SuppressWarnings ( "unused" )
@SuppressWarnings ( "unused" )
private static class ExceptionRaisingHandler {
private static class ExceptionRaisingHandler {
private final Throwable t ;
private final Throwable t ;
public ExceptionRaisingHandler ( Throwable t ) {
public ExceptionRaisingHandler ( Throwable t ) {
this . t = t ;
this . t = t ;
}
}
public void raiseException ( ) throws Throwable {
public void raiseException ( ) throws Throwable {
throw t ;
throw t ;
}
}
}
}
private static class ExceptionRaisingArgumentResolver implements HandlerMethodArgumentResolver {
private static class ExceptionRaisingArgumentResolver implements HandlerMethodArgumentResolver {
public boolean supportsParameter ( MethodParameter parameter ) {
public boolean supportsParameter ( MethodParameter parameter ) {
@ -235,5 +235,5 @@ public class InvocableHandlerMethodTests {
throw new HttpMessageNotReadableException ( "oops, can't read" ) ;
throw new HttpMessageNotReadableException ( "oops, can't read" ) ;
}
}
}
}
}
}