You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/06/08 06:39:08 UTC
[groovy] branch master updated: GROOVY-10126: Support parsing
multiple YAML documents
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new b3fd3e8 GROOVY-10126: Support parsing multiple YAML documents
b3fd3e8 is described below
commit b3fd3e830bc348dc55190bc14351259e35db43d2
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Jun 8 14:38:06 2021 +0800
GROOVY-10126: Support parsing multiple YAML documents
---
.../java/org/apache/groovy/yaml/util/YamlConverter.java | 9 +++++++--
.../src/spec/test/groovy/yaml/YamlParserTest.groovy | 17 +++++++++++++++++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/subprojects/groovy-yaml/src/main/java/org/apache/groovy/yaml/util/YamlConverter.java b/subprojects/groovy-yaml/src/main/java/org/apache/groovy/yaml/util/YamlConverter.java
index ba59bab..988f63c 100644
--- a/subprojects/groovy-yaml/src/main/java/org/apache/groovy/yaml/util/YamlConverter.java
+++ b/subprojects/groovy-yaml/src/main/java/org/apache/groovy/yaml/util/YamlConverter.java
@@ -26,6 +26,7 @@ import groovy.yaml.YamlRuntimeException;
import java.io.IOException;
import java.io.Reader;
+import java.util.List;
/**
* A converter for converting YAML to JSON, vice versa
@@ -39,8 +40,12 @@ public class YamlConverter {
*/
public static String convertYamlToJson(Reader yamlReader) {
try (Reader reader = yamlReader) {
- Object yaml = new ObjectMapper(new YAMLFactory()).readValue(reader, Object.class);
-
+ final YAMLFactory yamlFactory = new YAMLFactory();
+ List<Object> resultList =
+ new ObjectMapper()
+ .readValues(yamlFactory.createParser(reader), Object.class)
+ .readAll();
+ Object yaml = 1 == resultList.size() ? resultList.get(0) : resultList;
return new ObjectMapper().writeValueAsString(yaml);
} catch (IOException e) {
throw new YamlRuntimeException(e);
diff --git a/subprojects/groovy-yaml/src/spec/test/groovy/yaml/YamlParserTest.groovy b/subprojects/groovy-yaml/src/spec/test/groovy/yaml/YamlParserTest.groovy
index 43cdf73..b410bf1 100644
--- a/subprojects/groovy-yaml/src/spec/test/groovy/yaml/YamlParserTest.groovy
+++ b/subprojects/groovy-yaml/src/spec/test/groovy/yaml/YamlParserTest.groovy
@@ -105,4 +105,21 @@ matrix:
assert ['openjdk10', 'oraclejdk9', 'oraclejdk8'] == yaml.matrix.include.jdk
}
+
+ void testParseMultiDocs() {
+ def ys = new YamlSlurper()
+ def yaml = ys.parseText '''\
+---
+language: groovy
+version: 4
+---
+language: java
+version: 8
+ '''
+
+ assert 'groovy' == yaml[0].language
+ assert 4 == yaml[0].version
+ assert 'java' == yaml[1].language
+ assert 8 == yaml[1].version
+ }
}