3333import org .springframework .messaging .support .MessageBuilder ;
3434
3535import static org .junit .Assert .*;
36- import static org .mockito .Mockito .mock ;
37- import static org .mockito .Mockito .when ;
36+ import static org .mockito .Mockito .*;
3837
3938/**
40- * Unit tests for
41- * {@link org.springframework.messaging.handler.annotation.support.MessageMethodArgumentResolver}.
39+ * Unit tests for {@link MessageMethodArgumentResolver}.
4240 *
4341 * @author Stephane Nicoll
42+ * @author Juergen Hoeller
4443 */
4544public class MessageMethodArgumentResolverTests {
4645
@@ -56,10 +55,8 @@ public class MessageMethodArgumentResolverTests {
5655
5756 @ Before
5857 public void setup () throws Exception {
59-
6058 this .method = MessageMethodArgumentResolverTests .class .getDeclaredMethod ("handle" ,
61- Message .class , Message .class , Message .class , Message .class ,
62- ErrorMessage .class );
59+ Message .class , Message .class , Message .class , Message .class , ErrorMessage .class );
6360
6461 this .converter = mock (MessageConverter .class );
6562 this .resolver = new MessageMethodArgumentResolver (this .converter );
@@ -85,7 +82,7 @@ public void resolveWithMatchingPayloadType() throws Exception {
8582 }
8683
8784 @ Test
88- public void resolveWithPayloadTypeSubClass () throws Exception {
85+ public void resolveWithPayloadTypeSubclass () throws Exception {
8986 Message <Integer > message = MessageBuilder .withPayload (123 ).build ();
9087 MethodParameter parameter = new MethodParameter (this .method , 2 );
9188
@@ -155,7 +152,7 @@ public void resolveWithPayloadTypeOutOfBound() throws Exception {
155152 }
156153
157154 @ Test
158- public void resolveMessageSubClassMatch () throws Exception {
155+ public void resolveMessageSubclassMatch () throws Exception {
159156 ErrorMessage message = new ErrorMessage (new UnsupportedOperationException ());
160157 MethodParameter parameter = new MethodParameter (this .method , 4 );
161158
@@ -164,7 +161,7 @@ public void resolveMessageSubClassMatch() throws Exception {
164161 }
165162
166163 @ Test
167- public void resolveWithMessageSubClassAndPayloadWildcard () throws Exception {
164+ public void resolveWithMessageSubclassAndPayloadWildcard () throws Exception {
168165 ErrorMessage message = new ErrorMessage (new UnsupportedOperationException ());
169166 MethodParameter parameter = new MethodParameter (this .method , 0 );
170167
@@ -185,6 +182,46 @@ public void resolveWithWrongMessageType() throws Exception {
185182 assertSame (message , this .resolver .resolveArgument (parameter , message ));
186183 }
187184
185+ @ Test
186+ public void resolveWithPayloadTypeAsWildcardAndNoConverter () throws Exception {
187+ this .resolver = new MessageMethodArgumentResolver ();
188+
189+ Message <String > message = MessageBuilder .withPayload ("test" ).build ();
190+ MethodParameter parameter = new MethodParameter (this .method , 0 );
191+
192+ assertTrue (this .resolver .supportsParameter (parameter ));
193+ assertSame (message , this .resolver .resolveArgument (parameter , message ));
194+ }
195+
196+ @ Test
197+ public void resolveWithConversionNeededButNoConverter () throws Exception {
198+ this .resolver = new MessageMethodArgumentResolver ();
199+
200+ Message <String > message = MessageBuilder .withPayload ("test" ).build ();
201+ MethodParameter parameter = new MethodParameter (this .method , 1 );
202+
203+ assertTrue (this .resolver .supportsParameter (parameter ));
204+ thrown .expect (MessageConversionException .class );
205+ thrown .expectMessage (Integer .class .getName ());
206+ thrown .expectMessage (String .class .getName ());
207+ this .resolver .resolveArgument (parameter , message );
208+ }
209+
210+ @ Test
211+ public void resolveWithConversionEmptyPayloadButNoConverter () throws Exception {
212+ this .resolver = new MessageMethodArgumentResolver ();
213+
214+ Message <String > message = MessageBuilder .withPayload ("" ).build ();
215+ MethodParameter parameter = new MethodParameter (this .method , 1 );
216+
217+ assertTrue (this .resolver .supportsParameter (parameter ));
218+ thrown .expect (MessageConversionException .class );
219+ thrown .expectMessage ("the payload is empty" );
220+ thrown .expectMessage (Integer .class .getName ());
221+ thrown .expectMessage (String .class .getName ());
222+ this .resolver .resolveArgument (parameter , message );
223+ }
224+
188225
189226 @ SuppressWarnings ("unused" )
190227 private void handle (
0 commit comments