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));
-    }
-
 }

Reply via email to