Assert XmlBeanDefinitionReader.setValidationMode() values

See gh-30851
This commit is contained in:
Sam Brannen 2023-07-31 15:48:48 +03:00
parent 06c6af9b0d
commit 12f765c133
2 changed files with 16 additions and 3 deletions

View File

@ -173,9 +173,9 @@ public class XmlBeanDefinitionReader extends AbstractBeanDefinitionReader {
*/
public void setValidationModeName(String validationModeName) {
Assert.hasText(validationModeName, "'validationModeName' must not be null or blank");
Integer mode = constants.get(validationModeName);
Assert.notNull(mode, "Only validation mode constants allowed");
setValidationMode(mode);
Integer validationMode = constants.get(validationModeName);
Assert.notNull(validationMode, "Only validation mode constants allowed");
this.validationMode = validationMode;
}
/**
@ -185,6 +185,8 @@ public class XmlBeanDefinitionReader extends AbstractBeanDefinitionReader {
* activate schema namespace support explicitly: see {@link #setNamespaceAware}.
*/
public void setValidationMode(int validationMode) {
Assert.isTrue(constants.containsValue(validationMode),
"Only values of validation mode constants allowed");
this.validationMode = validationMode;
}

View File

@ -155,6 +155,17 @@ class XmlBeanDefinitionReaderTests {
.forEach(name -> assertThatNoException().as(name).isThrownBy(() -> reader.setValidationModeName(name)));
}
@Test
void setValidationMode() {
assertThatIllegalArgumentException().isThrownBy(() -> reader.setValidationMode(999));
assertThatNoException().isThrownBy(() -> reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE));
assertThatNoException().isThrownBy(() -> reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_AUTO));
assertThatNoException().isThrownBy(() -> reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_DTD));
assertThatNoException().isThrownBy(() -> reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD));
}
private static Stream<Field> streamValidationModeConstants() {
return Arrays.stream(XmlBeanDefinitionReader.class.getFields())
.filter(ReflectionUtils::isPublicStaticFinal)