This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 2e23066778 ISIS-2297: commons: support dump customization for YAML
writer
2e23066778 is described below
commit 2e230667785616727d8fa03cf3342a5c37270418
Author: Andi Huber <[email protected]>
AuthorDate: Sun Nov 6 07:50:05 2022 +0100
ISIS-2297: commons: support dump customization for YAML writer
---
.../causeway/commons/internal/resources/_Yaml.java | 33 ++++++++++++++++------
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git
a/commons/src/main/java/org/apache/causeway/commons/internal/resources/_Yaml.java
b/commons/src/main/java/org/apache/causeway/commons/internal/resources/_Yaml.java
index d2560a13c4..8cfa5b1c2f 100644
---
a/commons/src/main/java/org/apache/causeway/commons/internal/resources/_Yaml.java
+++
b/commons/src/main/java/org/apache/causeway/commons/internal/resources/_Yaml.java
@@ -25,7 +25,10 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
+import java.util.Optional;
+import java.util.function.UnaryOperator;
+import org.springframework.lang.Nullable;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.DumperOptions.LineBreak;
import org.yaml.snakeyaml.Yaml;
@@ -127,22 +130,36 @@ public class _Yaml {
// -- WRITING
+ public static Try<String> toString(
+ final @Nullable Object pojo) {
+ return Try.call(()->_toString(pojo, null));
+ }
+
+ public static Try<String> toString(
+ final @Nullable Object pojo,
+ final @Nullable UnaryOperator<DumperOptions> customizer) {
+ return Try.call(()->_toString(pojo, customizer));
+ }
+
@SneakyThrows
- private static String _toString(final Object pojo) {
+ private static String _toString(
+ final @Nullable Object pojo,
+ final @Nullable UnaryOperator<DumperOptions> customizer) {
try(val writer = new StringWriter()){
- val options = new DumperOptions();
- options.setIndent(2);
- options.setLineBreak(LineBreak.UNIX); // fixated for consistency
+ val defaultOptions = new DumperOptions();
+ defaultOptions.setIndent(2);
+ defaultOptions.setLineBreak(LineBreak.UNIX); // fixated for
consistency
//options.setPrettyFlow(true);
//options.setDefaultFlowStyle(FlowStyle.BLOCK);
+
+ val options = Optional.ofNullable(customizer)
+ .map(f->f.apply(defaultOptions))
+ .orElse(defaultOptions);
+
val yaml = new Yaml(options);
yaml.dump(pojo, writer);
return writer.toString();
}
}
- public static Try<String> toString(final Object pojo) {
- return Try.call(()->_toString(pojo));
- }
-
}