20
20
import java .text .DateFormat ;
21
21
import java .text .SimpleDateFormat ;
22
22
import java .util .Collection ;
23
+ import java .util .Collections ;
24
+ import java .util .HashMap ;
23
25
import java .util .List ;
24
26
import java .util .Locale ;
25
27
import java .util .Map ;
26
- import java .util .Map .Entry ;
27
28
import java .util .TimeZone ;
28
29
29
30
import com .fasterxml .jackson .annotation .JsonCreator ;
30
31
import com .fasterxml .jackson .databind .Module ;
31
32
import com .fasterxml .jackson .databind .ObjectMapper ;
32
33
import com .fasterxml .jackson .databind .PropertyNamingStrategy ;
34
+ import com .fasterxml .jackson .databind .SerializationFeature ;
33
35
import com .fasterxml .jackson .databind .module .SimpleModule ;
34
36
import com .fasterxml .jackson .datatype .joda .cfg .JacksonJodaDateFormat ;
35
37
import com .fasterxml .jackson .datatype .joda .ser .DateTimeSerializer ;
70
72
* @author Marcel Overdijk
71
73
* @author Sebastien Deleuze
72
74
* @author Johannes Edmeier
75
+ * @author Phillip Webb
73
76
* @since 1.1.0
74
77
*/
75
78
@ Configuration
76
79
@ ConditionalOnClass (ObjectMapper .class )
77
80
public class JacksonAutoConfiguration {
78
81
82
+ private static final Map <?, Boolean > FEATURE_DEFAULTS ;
83
+
84
+ static {
85
+ Map <Object , Boolean > featureDefaults = new HashMap <>();
86
+ featureDefaults .put (SerializationFeature .WRITE_DATES_AS_TIMESTAMPS , false );
87
+ FEATURE_DEFAULTS = Collections .unmodifiableMap (featureDefaults );
88
+ }
89
+
79
90
@ Bean
80
91
public JsonComponentModule jsonComponentModule () {
81
92
return new JsonComponentModule ();
@@ -228,6 +239,7 @@ public void customize(Jackson2ObjectMapperBuilder builder) {
228
239
if (this .jacksonProperties .getTimeZone () != null ) {
229
240
builder .timeZone (this .jacksonProperties .getTimeZone ());
230
241
}
242
+ configureFeatures (builder , FEATURE_DEFAULTS );
231
243
configureFeatures (builder , this .jacksonProperties .getDeserialization ());
232
244
configureFeatures (builder , this .jacksonProperties .getSerialization ());
233
245
configureFeatures (builder , this .jacksonProperties .getMapper ());
@@ -241,14 +253,16 @@ public void customize(Jackson2ObjectMapperBuilder builder) {
241
253
242
254
private void configureFeatures (Jackson2ObjectMapperBuilder builder ,
243
255
Map <?, Boolean > features ) {
244
- for (Entry <?, Boolean > entry : features .entrySet ()) {
245
- if (entry .getValue () != null && entry .getValue ()) {
246
- builder .featuresToEnable (entry .getKey ());
247
- }
248
- else {
249
- builder .featuresToDisable (entry .getKey ());
256
+ features .forEach ((feature , value ) -> {
257
+ if (value != null ) {
258
+ if (value ) {
259
+ builder .featuresToEnable (feature );
260
+ }
261
+ else {
262
+ builder .featuresToDisable (feature );
263
+ }
250
264
}
251
- }
265
+ });
252
266
}
253
267
254
268
private void configureDateFormat (Jackson2ObjectMapperBuilder builder ) {
0 commit comments