Jackson2MapperCustomizerFactory.java
package top.infra.jackson2;
import java.util.Collection;
import java.util.Optional;
import top.infra.common.ClassUtils;
public interface Jackson2MapperCustomizerFactory {
String CLASS_JACKSON2_OBJECT_MAPPER_BUILDER = "org.springframework.http.converter.json.Jackson2ObjectMapperBuilder";
Optional<Jackson2MapperCustomizer> getObject();
default Optional<Jackson2MapperCustomizer> newInstanceIfPresent(
final String customizerClass, final Collection<String> classesMustPresent) {
try {
final Optional<Jackson2MapperCustomizer> customizer;
if (ClassUtils.isPresent(customizerClass) && classesMustPresent.stream().allMatch(ClassUtils::isPresent)) {
final Optional<Class<?>> classOptional = ClassUtils.forName(customizerClass);
if (classOptional.isPresent()) {
customizer = Optional.of((Jackson2MapperCustomizer) classOptional.get().newInstance());
} else {
customizer = Optional.empty();
}
} else {
customizer = Optional.empty();
}
return customizer;
} catch (final ReflectiveOperationException ex) {
return Optional.empty();
}
}
}