MessageInterpolatorFactory Class — spring-boot Architecture
Architecture documentation for the MessageInterpolatorFactory class in MessageInterpolatorFactory.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/validation/MessageInterpolatorFactory.java lines 42–109
public class MessageInterpolatorFactory implements ObjectFactory<MessageInterpolator> {
private static final Set<String> FALLBACKS;
static {
Set<String> fallbacks = new LinkedHashSet<>();
fallbacks.add("org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator");
FALLBACKS = Collections.unmodifiableSet(fallbacks);
}
private final @Nullable MessageSource messageSource;
public MessageInterpolatorFactory() {
this(null);
}
/**
* Creates a new {@link MessageInterpolatorFactory} that will produce a
* {@link MessageInterpolator} that uses the given {@code messageSource} to resolve
* any message parameters before final interpolation.
* @param messageSource message source to be used by the interpolator
* @since 2.6.0
*/
public MessageInterpolatorFactory(@Nullable MessageSource messageSource) {
this.messageSource = messageSource;
}
@Override
public MessageInterpolator getObject() throws BeansException {
MessageInterpolator messageInterpolator = getMessageInterpolator();
if (this.messageSource != null) {
return new MessageSourceMessageInterpolator(this.messageSource, messageInterpolator);
}
return messageInterpolator;
}
private MessageInterpolator getMessageInterpolator() {
try {
return Validation.byDefaultProvider().configure().getDefaultMessageInterpolator();
}
catch (ValidationException ex) {
MessageInterpolator fallback = getFallback();
if (fallback != null) {
return fallback;
}
throw ex;
}
}
private @Nullable MessageInterpolator getFallback() {
for (String fallback : FALLBACKS) {
try {
return getFallback(fallback);
}
catch (Exception ex) {
// Swallow and continue
}
}
return null;
}
private MessageInterpolator getFallback(String fallback) {
Class<?> interpolatorClass = ClassUtils.resolveClassName(fallback, null);
Object interpolator = BeanUtils.instantiateClass(interpolatorClass);
return (MessageInterpolator) interpolator;
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free