aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/yaml/snakeyaml
diff options
context:
space:
mode:
authormaslovalex <alexander.maslov@gmail.com>2022-04-15 20:06:22 +0300
committermaslovalex <alexander.maslov@gmail.com>2022-04-15 20:06:22 +0300
commit467bcc9d06c6914e334b4c4052fa8aa27f092721 (patch)
tree7c2b1949eb5f41771466bc87d4c81db1b9f50b63 /src/main/java/org/yaml/snakeyaml
parent04687842700919db5ba4baf176abf9b044b32a45 (diff)
downloadsnakeyaml-467bcc9d06c6914e334b4c4052fa8aa27f092721.tar.gz
expect node to be scalar when enforcings String keys
Diffstat (limited to 'src/main/java/org/yaml/snakeyaml')
-rw-r--r--src/main/java/org/yaml/snakeyaml/constructor/Constructor.java10
-rw-r--r--src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java17
2 files changed, 14 insertions, 13 deletions
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
index 0999ec35..ee887dcd 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
@@ -220,17 +220,9 @@ public class Constructor extends SafeConstructor {
Class<? extends Object> beanType = node.getType();
List<NodeTuple> nodeValue = node.getValue();
for (NodeTuple tuple : nodeValue) {
- ScalarNode keyNode;
- if (tuple.getKeyNode() instanceof ScalarNode) {
- // key must be scalar
- keyNode = (ScalarNode) tuple.getKeyNode();
- } else {
- throw new YAMLException(
- "Keys must be scalars but found: " + tuple.getKeyNode());
- }
Node valueNode = tuple.getValueNode();
// flattenMapping enforces keys to be Strings
- String key = (String) constructObject(keyNode);
+ String key = (String) constructObject(tuple.getKeyNode());
try {
TypeDescription memberDescription = typeDefinitions.get(beanType);
Property property = memberDescription == null ? getProperty(beanType, key)
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
index 8e7ddb0c..f617a81c 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
@@ -97,8 +97,13 @@ public class SafeConstructor extends BaseConstructor {
Node keyNode = tuple.getKeyNode();
if (!keyNode.getTag().equals(Tag.MERGE)) {
if (forceStringKeys) {
- keyNode.setType(String.class);
- keyNode.setTag(Tag.STR);
+ if (keyNode instanceof ScalarNode) {
+ keyNode.setType(String.class);
+ keyNode.setTag(Tag.STR);
+ } else {
+ throw new YAMLException(
+ "Keys must be scalars but found: " + keyNode);
+ }
}
Object key = constructObject(keyNode);
if (key != null && !forceStringKeys) {
@@ -182,8 +187,12 @@ public class SafeConstructor extends BaseConstructor {
} else {
// we need to construct keys to avoid duplications
if (forceStringKeys) {
- keyNode.setType(String.class);
- keyNode.setTag(Tag.STR);
+ if (keyNode instanceof ScalarNode) {
+ keyNode.setType(String.class);
+ keyNode.setTag(Tag.STR);
+ } else {
+ throw new YAMLException("Keys must be scalars but found: " + keyNode);
+ }
}
Object key = constructObject(keyNode);
if (!key2index.containsKey(key)) { // 1st time merging key