Refine YAML type restriction error

Closes gh-21596
This commit is contained in:
Phillip Webb 2020-06-02 22:46:47 -07:00
parent 95031295b9
commit b5fe3c3494
2 changed files with 7 additions and 2 deletions

View File

@ -26,6 +26,8 @@ import java.util.stream.Collectors;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
import org.springframework.util.Assert;
/**
* Thin wrapper to adapt Snake {@link Yaml} to {@link JsonParser}.
*
@ -63,7 +65,9 @@ public class YamlJsonParser extends AbstractJsonParser {
@Override
protected Class<?> getClassForName(String name) throws ClassNotFoundException {
return (SUPPORTED_TYPES.contains(name)) ? super.getClassForName(name) : null;
Assert.state(SUPPORTED_TYPES.contains(name),
() -> "Unsupported '" + name + "' type encountered in YAML document");
return super.getClassForName(name);
}
}

View File

@ -36,7 +36,8 @@ public class YamlJsonParserTests extends AbstractJsonParserTests {
@Test
public void customTypesAreNotLoaded() throws Exception {
assertThatExceptionOfType(ConstructorException.class)
.isThrownBy(() -> getParser().parseMap("{value: !!java.net.URL [\"http://localhost:9000/\"]}"));
.isThrownBy(() -> getParser().parseMap("{value: !!java.net.URL [\"http://localhost:9000/\"]}"))
.withCauseInstanceOf(IllegalStateException.class);
}
}