View Javadoc
1   package top.infra.jackson2;
2   
3   import java.util.Collection;
4   import java.util.Optional;
5   
6   import top.infra.common.ClassUtils;
7   
8   public interface Jackson2MapperCustomizerFactory {
9   
10      String CLASS_JACKSON2_OBJECT_MAPPER_BUILDER = "org.springframework.http.converter.json.Jackson2ObjectMapperBuilder";
11  
12      Optional<Jackson2MapperCustomizer> getObject();
13  
14      default Optional<Jackson2MapperCustomizer> newInstanceIfPresent(
15          final String customizerClass, final Collection<String> classesMustPresent) {
16          try {
17              final Optional<Jackson2MapperCustomizer> customizer;
18  
19              if (ClassUtils.isPresent(customizerClass) && classesMustPresent.stream().allMatch(ClassUtils::isPresent)) {
20                  final Optional<Class<?>> classOptional = ClassUtils.forName(customizerClass);
21                  if (classOptional.isPresent()) {
22                      customizer = Optional.of((Jackson2MapperCustomizer) classOptional.get().newInstance());
23                  } else {
24                      customizer = Optional.empty();
25                  }
26              } else {
27                  customizer = Optional.empty();
28              }
29  
30              return customizer;
31          } catch (final ReflectiveOperationException ex) {
32              return Optional.empty();
33          }
34      }
35  }