1 package top.infra.jackson2;
2
3 import static java.util.stream.Collectors.toList;
4
5 import com.google.common.collect.ImmutableList;
6
7 import lombok.extern.slf4j.Slf4j;
8
9 import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
10 import org.springframework.core.OrderComparator;
11 import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
12
13 import java.util.List;
14
15 @Slf4j
16 public class DefaultJackson2ObjectMapperBuilderCustomizer implements Jackson2ObjectMapperBuilderCustomizer {
17
18 private final List<Jackson2Customizer> customizers;
19 private final Jackson2Properties properties;
20
21 public DefaultJackson2ObjectMapperBuilderCustomizer(final List<Jackson2Customizer> customizers, final Jackson2Properties properties) {
22 this.customizers = customizers != null ?
23 customizers.stream().sorted(OrderComparator.INSTANCE).collect(toList()) :
24 ImmutableList.of();
25 this.properties = properties;
26 }
27
28 @Override
29 public void customize(final Jackson2ObjectMapperBuilder builder) {
30 this.customizers.forEach(customizer -> customizer.customize(properties, builder));
31 log.info("done.");
32 }
33 }