Browse Source

Refine YAML type restriction error

Closes gh-21596
pull/22110/head
Phillip Webb 6 years ago
parent
commit
b5fe3c3494
  1. 6
      spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/YamlJsonParser.java
  2. 3
      spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/YamlJsonParserTests.java

6
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/json/YamlJsonParser.java

@ -26,6 +26,8 @@ import java.util.stream.Collectors; @@ -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 { @@ -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);
}
}

3
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/YamlJsonParserTests.java

@ -36,7 +36,8 @@ public class YamlJsonParserTests extends AbstractJsonParserTests { @@ -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);
}
}

Loading…
Cancel
Save