1
1
/*
2
- * Copyright 2002-2014 the original author or authors.
2
+ * Copyright 2002-2015 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
22
22
import java .util .HashMap ;
23
23
import java .util .Map ;
24
24
25
- import org . junit . Before ;
25
+ import com . fasterxml . jackson . databind . DeserializationFeature ;
26
26
import org .junit .Test ;
27
27
28
28
import org .springframework .messaging .Message ;
29
29
import org .springframework .messaging .MessageHeaders ;
30
30
import org .springframework .messaging .support .MessageBuilder ;
31
31
import org .springframework .util .MimeType ;
32
32
33
+ import static org .hamcrest .Matchers .*;
33
34
import static org .junit .Assert .*;
34
35
35
36
/**
36
37
* Test fixture for {@link org.springframework.messaging.converter.MappingJackson2MessageConverter}.
37
38
*
38
39
* @author Rossen Stoyanchev
40
+ * @author Sebastien Deleuze
39
41
*/
40
42
public class MappingJackson2MessageConverterTests {
41
43
42
44
private static Charset UTF_8 = Charset .forName ("UTF-8" );
43
45
44
- private MappingJackson2MessageConverter converter ;
45
46
47
+ @ Test
48
+ public void defaultConstructor () {
49
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
50
+ assertThat (converter .getSupportedMimeTypes (), contains (new MimeType ("application" , "json" , UTF_8 )));
51
+ assertFalse (converter .getObjectMapper ().getDeserializationConfig ().isEnabled (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES ));
52
+ }
53
+
54
+ @ Test // SPR-12724
55
+ public void mimetypeParametrizedConstructor () {
56
+ MimeType mimetype = new MimeType ("application" , "xml" , UTF_8 );
57
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter (mimetype );
58
+ assertThat (converter .getSupportedMimeTypes (), contains (mimetype ));
59
+ assertFalse (converter .getObjectMapper ().getDeserializationConfig ().isEnabled (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES ));
60
+ }
46
61
47
- @ Before
48
- public void setup () {
49
- this .converter = new MappingJackson2MessageConverter ();
62
+ @ Test // SPR-12724
63
+ public void mimetypesParametrizedConstructor () {
64
+ MimeType jsonMimetype = new MimeType ("application" , "json" , UTF_8 );
65
+ MimeType xmlMimetype = new MimeType ("application" , "xml" , UTF_8 );
66
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter (jsonMimetype , xmlMimetype );
67
+ assertThat (converter .getSupportedMimeTypes (), contains (jsonMimetype , xmlMimetype ));
68
+ assertFalse (converter .getObjectMapper ().getDeserializationConfig ().isEnabled (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES ));
50
69
}
51
70
52
71
@ Test
53
72
public void fromMessage () throws Exception {
73
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
54
74
String payload = "{\" bytes\" :\" AQI=\" ,\" array\" :[\" Foo\" ,\" Bar\" ],"
55
75
+ "\" number\" :42,\" string\" :\" Foo\" ,\" bool\" :true,\" fraction\" :42.0}" ;
56
76
Message <?> message = MessageBuilder .withPayload (payload .getBytes (UTF_8 )).build ();
57
- MyBean actual = (MyBean ) this . converter .fromMessage (message , MyBean .class );
77
+ MyBean actual = (MyBean ) converter .fromMessage (message , MyBean .class );
58
78
59
79
assertEquals ("Foo" , actual .getString ());
60
80
assertEquals (42 , actual .getNumber ());
@@ -66,11 +86,12 @@ public void fromMessage() throws Exception {
66
86
67
87
@ Test
68
88
public void fromMessageUntyped () throws Exception {
89
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
69
90
String payload = "{\" bytes\" :\" AQI=\" ,\" array\" :[\" Foo\" ,\" Bar\" ],"
70
91
+ "\" number\" :42,\" string\" :\" Foo\" ,\" bool\" :true,\" fraction\" :42.0}" ;
71
92
Message <?> message = MessageBuilder .withPayload (payload .getBytes (UTF_8 )).build ();
72
93
@ SuppressWarnings ("unchecked" )
73
- HashMap <String , Object > actual = (HashMap <String , Object >) this . converter .fromMessage (message , HashMap .class );
94
+ HashMap <String , Object > actual = (HashMap <String , Object >) converter .fromMessage (message , HashMap .class );
74
95
75
96
assertEquals ("Foo" , actual .get ("string" ));
76
97
assertEquals (42 , actual .get ("number" ));
@@ -82,21 +103,24 @@ public void fromMessageUntyped() throws Exception {
82
103
83
104
@ Test (expected = MessageConversionException .class )
84
105
public void fromMessageInvalidJson () throws Exception {
106
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
85
107
String payload = "FooBar" ;
86
108
Message <?> message = MessageBuilder .withPayload (payload .getBytes (UTF_8 )).build ();
87
- this . converter .fromMessage (message , MyBean .class );
109
+ converter .fromMessage (message , MyBean .class );
88
110
}
89
111
90
112
@ Test
91
113
public void fromMessageValidJsonWithUnknownProperty () throws IOException {
114
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
92
115
String payload = "{\" string\" :\" string\" ,\" unknownProperty\" :\" value\" }" ;
93
116
Message <?> message = MessageBuilder .withPayload (payload .getBytes (UTF_8 )).build ();
94
- MyBean myBean = (MyBean )this . converter .fromMessage (message , MyBean .class );
117
+ MyBean myBean = (MyBean )converter .fromMessage (message , MyBean .class );
95
118
assertEquals ("string" , myBean .getString ());
96
119
}
97
120
98
121
@ Test
99
122
public void toMessage () throws Exception {
123
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
100
124
MyBean payload = new MyBean ();
101
125
payload .setString ("Foo" );
102
126
payload .setNumber (42 );
@@ -105,7 +129,7 @@ public void toMessage() throws Exception {
105
129
payload .setBool (true );
106
130
payload .setBytes (new byte []{0x1 , 0x2 });
107
131
108
- Message <?> message = this . converter .toMessage (payload , null );
132
+ Message <?> message = converter .toMessage (payload , null );
109
133
String actual = new String ((byte []) message .getPayload (), UTF_8 );
110
134
111
135
assertTrue (actual .contains ("\" string\" :\" Foo\" " ));
@@ -120,29 +144,31 @@ public void toMessage() throws Exception {
120
144
121
145
@ Test
122
146
public void toMessageUtf16 () {
147
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
123
148
Charset utf16 = Charset .forName ("UTF-16BE" );
124
149
MimeType contentType = new MimeType ("application" , "json" , utf16 );
125
150
Map <String , Object > map = new HashMap <>();
126
151
map .put (MessageHeaders .CONTENT_TYPE , contentType );
127
152
MessageHeaders headers = new MessageHeaders (map );
128
153
String payload = "H\u00e9 llo W\u00f6 rld" ;
129
- Message <?> message = this . converter .toMessage (payload , headers );
154
+ Message <?> message = converter .toMessage (payload , headers );
130
155
131
156
assertEquals ("\" " + payload + "\" " , new String ((byte []) message .getPayload (), utf16 ));
132
157
assertEquals (contentType , message .getHeaders ().get (MessageHeaders .CONTENT_TYPE ));
133
158
}
134
159
135
160
@ Test
136
161
public void toMessageUtf16String () {
137
- this .converter .setSerializedPayloadClass (String .class );
162
+ MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter ();
163
+ converter .setSerializedPayloadClass (String .class );
138
164
139
165
Charset utf16 = Charset .forName ("UTF-16BE" );
140
166
MimeType contentType = new MimeType ("application" , "json" , utf16 );
141
167
Map <String , Object > map = new HashMap <>();
142
168
map .put (MessageHeaders .CONTENT_TYPE , contentType );
143
169
MessageHeaders headers = new MessageHeaders (map );
144
170
String payload = "H\u00e9 llo W\u00f6 rld" ;
145
- Message <?> message = this . converter .toMessage (payload , headers );
171
+ Message <?> message = converter .toMessage (payload , headers );
146
172
147
173
assertEquals ("\" " + payload + "\" " , message .getPayload ());
148
174
assertEquals (contentType , message .getHeaders ().get (MessageHeaders .CONTENT_TYPE ));
0 commit comments