MessageSourceMessageInterpolatorIntegrationTests Class — spring-boot Architecture
Architecture documentation for the MessageSourceMessageInterpolatorIntegrationTests class in MessageSourceMessageInterpolatorIntegrationTests.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot/src/test/java/org/springframework/boot/validation/MessageSourceMessageInterpolatorIntegrationTests.java lines 42–164
class MessageSourceMessageInterpolatorIntegrationTests {
@NotNull
@SuppressWarnings("NullAway.Init")
private String defaultMessage;
@NotNull(message = "{null}")
@SuppressWarnings("NullAway.Init")
private String nullable;
@NotNull(message = "{blank}")
@SuppressWarnings("NullAway.Init")
private String blank;
@NotNull(message = "{unknown}")
@SuppressWarnings("NullAway.Init")
private String unknown;
@NotNull(message = "{recursion}")
@SuppressWarnings("NullAway.Init")
private String recursion;
@NotNull(message = "\\{null}")
@SuppressWarnings("NullAway.Init")
private String escapePrefix;
@NotNull(message = "{null\\}")
@SuppressWarnings("NullAway.Init")
private String escapeSuffix;
@NotNull(message = "\\{null\\}")
@SuppressWarnings("NullAway.Init")
private String escapePrefixSuffix;
@NotNull(message = "\\\\{null}")
@SuppressWarnings("NullAway.Init")
private String escapeEscape;
@Test
void defaultMessage() {
assertThat(validate("defaultMessage")).containsExactly("must not be null");
}
@Test
void nullable() {
assertThat(validate("nullable")).containsExactly("must not be null");
}
@Test
void blank() {
assertThat(validate("blank")).containsExactly("must not be null or must not be blank");
}
@Test
void recursion() {
assertThatException().isThrownBy(() -> validate("recursion"))
.withStackTraceContaining("Circular reference '{recursion -> middle -> recursion}'");
}
@Test
void unknown() {
assertThat(validate("unknown")).containsExactly("{unknown}");
}
@Test
void escapePrefix() {
assertThat(validate("escapePrefix")).containsExactly("\\{null}");
}
@Test
void escapeSuffix() {
assertThat(validate("escapeSuffix")).containsExactly("{null\\}");
}
@Test
void escapePrefixSuffix() {
assertThat(validate("escapePrefixSuffix")).containsExactly("{null}");
}
@Test
void escapeEscape() {
assertThat(validate("escapeEscape")).containsExactly("\\must not be null");
}
private List<String> validate(String property) {
return withEnglishLocale(() -> {
Validator validator = buildValidator();
List<String> messages = new ArrayList<>();
Set<ConstraintViolation<Object>> constraints = validator.validateProperty(this, property);
for (ConstraintViolation<Object> constraint : constraints) {
messages.add(constraint.getMessage());
}
return messages;
});
}
private static Validator buildValidator() {
Locale locale = LocaleContextHolder.getLocale();
StaticMessageSource messageSource = new StaticMessageSource();
messageSource.addMessage("blank", locale, "{null} or {jakarta.validation.constraints.NotBlank.message}");
messageSource.addMessage("null", locale, "{jakarta.validation.constraints.NotNull.message}");
messageSource.addMessage("recursion", locale, "{middle}");
messageSource.addMessage("middle", locale, "{recursion}");
MessageInterpolatorFactory messageInterpolatorFactory = new MessageInterpolatorFactory(messageSource);
try (LocalValidatorFactoryBean validatorFactory = new LocalValidatorFactoryBean()) {
validatorFactory.setMessageInterpolator(messageInterpolatorFactory.getObject());
validatorFactory.afterPropertiesSet();
return validatorFactory.getValidator();
}
}
private static <T> T withEnglishLocale(Supplier<T> supplier) {
Locale defaultLocale = Locale.getDefault();
try {
Locale.setDefault(Locale.ENGLISH);
return supplier.get();
}
finally {
Locale.setDefault(defaultLocale);
}
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free