28
28
import com .fasterxml .jackson .core .JsonParser ;
29
29
import com .fasterxml .jackson .databind .DeserializationFeature ;
30
30
import com .fasterxml .jackson .databind .JsonDeserializer ;
31
+ import com .fasterxml .jackson .databind .JsonMappingException ;
31
32
import com .fasterxml .jackson .databind .JsonSerializer ;
32
33
import com .fasterxml .jackson .databind .MapperFeature ;
33
34
import com .fasterxml .jackson .databind .Module ;
37
38
import com .fasterxml .jackson .databind .cfg .DeserializerFactoryConfig ;
38
39
import com .fasterxml .jackson .databind .cfg .SerializerFactoryConfig ;
39
40
import com .fasterxml .jackson .databind .deser .BasicDeserializerFactory ;
41
+ import com .fasterxml .jackson .databind .deser .Deserializers ;
40
42
import com .fasterxml .jackson .databind .deser .std .DateDeserializers ;
41
43
import com .fasterxml .jackson .databind .introspect .NopAnnotationIntrospector ;
42
44
import com .fasterxml .jackson .databind .module .SimpleModule ;
@@ -190,46 +192,76 @@ public void propertyNamingStrategy() {
190
192
assertSame (strategy , objectMapper .getDeserializationConfig ().getPropertyNamingStrategy ());
191
193
}
192
194
195
+ @ Test
196
+ public void serializerByType () {
197
+ JsonSerializer <Number > serializer = new NumberSerializer ();
198
+ ObjectMapper objectMapper = Jackson2ObjectMapperBuilder .json ()
199
+ .serializerByType (Boolean .class , serializer ).build ();
200
+ assertTrue (getSerializerFactoryConfig (objectMapper ).hasSerializers ());
201
+ Serializers serializers = getSerializerFactoryConfig (objectMapper ).serializers ().iterator ().next ();
202
+ assertTrue (serializers .findSerializer (null , SimpleType .construct (Boolean .class ), null ) == serializer );
203
+ }
204
+
205
+ @ Test
206
+ public void deserializerByType () throws JsonMappingException {
207
+ JsonDeserializer <Date > deserializer = new DateDeserializers .DateDeserializer ();
208
+ ObjectMapper objectMapper = Jackson2ObjectMapperBuilder .json ()
209
+ .deserializerByType (Date .class , deserializer ).build ();
210
+ assertTrue (getDeserializerFactoryConfig (objectMapper ).hasDeserializers ());
211
+ Deserializers deserializers = getDeserializerFactoryConfig (objectMapper ).deserializers ().iterator ().next ();
212
+ assertTrue (deserializers .findBeanDeserializer (SimpleType .construct (Date .class ), null , null ) == deserializer );
213
+ }
214
+
215
+ @ Test
216
+ public void mixIn () {
217
+ Class <?> target = String .class ;
218
+ Class <?> mixInSource = Object .class ;
219
+
220
+ ObjectMapper objectMapper = Jackson2ObjectMapperBuilder .json ().mixIn (target ,
221
+ mixInSource ).build ();
222
+
223
+ assertEquals (1 , objectMapper .mixInCount ());
224
+ assertSame (mixInSource , objectMapper .findMixInClassFor (target ));
225
+ }
226
+
193
227
@ Test
194
228
public void mixIns () {
195
229
Class <?> target = String .class ;
196
- Class <?> mixinSource = Object .class ;
230
+ Class <?> mixInSource = Object .class ;
197
231
Map <Class <?>, Class <?>> mixIns = new HashMap <Class <?>, Class <?>>();
198
- mixIns .put (target , mixinSource );
232
+ mixIns .put (target , mixInSource );
199
233
200
234
ObjectMapper objectMapper = Jackson2ObjectMapperBuilder .json ().mixIns (mixIns ).build ();
201
235
202
236
assertEquals (1 , objectMapper .mixInCount ());
203
- assertSame (mixinSource , objectMapper .findMixInClassFor (target ));
237
+ assertSame (mixInSource , objectMapper .findMixInClassFor (target ));
204
238
}
205
239
206
240
@ Test
207
- public void completeSetup () {
241
+ public void completeSetup () throws JsonMappingException {
208
242
NopAnnotationIntrospector annotationIntrospector = NopAnnotationIntrospector .instance ;
209
243
210
- Map <Class <?>, JsonDeserializer <?>> deserializers = new HashMap <Class <?>, JsonDeserializer <?>>();
211
- deserializers .put (Date .class , new DateDeserializers .DateDeserializer ());
244
+ Map <Class <?>, JsonDeserializer <?>> deserializerMap = new HashMap <Class <?>, JsonDeserializer <?>>();
245
+ JsonDeserializer <Date > deserializer = new DateDeserializers .DateDeserializer ();
246
+ deserializerMap .put (Date .class , deserializer );
212
247
213
248
JsonSerializer <Class <?>> serializer1 = new ClassSerializer ();
214
249
JsonSerializer <Number > serializer2 = new NumberSerializer ();
215
250
216
- Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder .json ();
217
-
218
- builder .serializers (serializer1 );
219
- builder .serializersByType (Collections .<Class <?>, JsonSerializer <?>>singletonMap (Boolean .class , serializer2 ));
220
- builder .deserializersByType (deserializers );
221
- builder .annotationIntrospector (annotationIntrospector );
222
-
223
- builder .featuresToEnable (SerializationFeature .FAIL_ON_EMPTY_BEANS ,
224
- DeserializationFeature .UNWRAP_ROOT_VALUE ,
225
- JsonParser .Feature .ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER ,
226
- JsonGenerator .Feature .WRITE_NUMBERS_AS_STRINGS );
227
-
228
- builder .featuresToDisable (MapperFeature .AUTO_DETECT_GETTERS ,
229
- MapperFeature .AUTO_DETECT_FIELDS , JsonParser .Feature .AUTO_CLOSE_SOURCE ,
230
- JsonGenerator .Feature .QUOTE_FIELD_NAMES );
231
-
232
- builder .serializationInclusion (JsonInclude .Include .NON_NULL );
251
+ Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder .json ()
252
+ .serializers (serializer1 )
253
+ .serializersByType (Collections .<Class <?>, JsonSerializer <?>>singletonMap (Boolean .class , serializer2 ))
254
+ .deserializersByType (deserializerMap )
255
+ .annotationIntrospector (annotationIntrospector )
256
+ .featuresToEnable (SerializationFeature .FAIL_ON_EMPTY_BEANS ,
257
+ DeserializationFeature .UNWRAP_ROOT_VALUE ,
258
+ JsonParser .Feature .ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER ,
259
+ JsonGenerator .Feature .WRITE_NUMBERS_AS_STRINGS )
260
+ .featuresToDisable (MapperFeature .AUTO_DETECT_GETTERS ,
261
+ MapperFeature .AUTO_DETECT_FIELDS ,
262
+ JsonParser .Feature .AUTO_CLOSE_SOURCE ,
263
+ JsonGenerator .Feature .QUOTE_FIELD_NAMES )
264
+ .serializationInclusion (JsonInclude .Include .NON_NULL );
233
265
234
266
ObjectMapper objectMapper = new ObjectMapper ();
235
267
builder .configure (objectMapper );
@@ -242,6 +274,9 @@ public void completeSetup() {
242
274
assertTrue (serializers .findSerializer (null , SimpleType .construct (Boolean .class ), null ) == serializer2 );
243
275
assertNull (serializers .findSerializer (null , SimpleType .construct (Number .class ), null ));
244
276
277
+ Deserializers deserializers = getDeserializerFactoryConfig (objectMapper ).deserializers ().iterator ().next ();
278
+ assertTrue (deserializers .findBeanDeserializer (SimpleType .construct (Date .class ), null , null ) == deserializer );
279
+
245
280
assertTrue (annotationIntrospector == objectMapper .getSerializationConfig ().getAnnotationIntrospector ());
246
281
assertTrue (annotationIntrospector == objectMapper .getDeserializationConfig ().getAnnotationIntrospector ());
247
282
0 commit comments