diff options
author | maslovalex <alexander.maslov@gmail.com> | 2022-04-15 20:06:22 +0300 |
---|---|---|
committer | maslovalex <alexander.maslov@gmail.com> | 2022-04-15 20:06:22 +0300 |
commit | 467bcc9d06c6914e334b4c4052fa8aa27f092721 (patch) | |
tree | 7c2b1949eb5f41771466bc87d4c81db1b9f50b63 /src/main/java/org/yaml/snakeyaml | |
parent | 04687842700919db5ba4baf176abf9b044b32a45 (diff) | |
download | snakeyaml-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.java | 10 | ||||
-rw-r--r-- | src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java | 17 |
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 |